Collect compensation data from job postings, salary sites, and company pages. Make data-driven compensation decisions.
Accurate salary data is essential for competitive compensation packages, but information is scattered across job boards, company sites, and salary databases. Manual collection doesn't scale.
Traditional salary surveys are expensive and often outdated by the time they're published. You need real-time market data.
Comprehensive compensation intelligence
Extract salary ranges, minimums, maximums, and midpoints from listings.
Capture bonus, equity, benefits, and other compensation components.
Track salary variations by city, state, region, and remote status.
Segment by seniority level, years of experience, and skills required.
Extract salary data from job postings
curl -G "https://api.webscraping.ai/ai/fields" \
--data-urlencode "api_key=YOUR_API_KEY" \
--data-urlencode "url=https://job-board.com/job/senior-software-engineer" \
--data-urlencode "fields[job_title]=The job title" \
--data-urlencode "fields[company]=Company name" \
--data-urlencode "fields[location]=Job location (city, state, remote)" \
--data-urlencode "fields[salary_min]=Minimum salary as a number" \
--data-urlencode "fields[salary_max]=Maximum salary as a number" \
--data-urlencode "fields[salary_currency]=Currency (USD, EUR, etc)" \
--data-urlencode "fields[salary_period]=Annual, monthly, or hourly" \
--data-urlencode "fields[bonus]=Bonus information if mentioned" \
--data-urlencode "fields[equity]=Equity/stock options if mentioned" \
--data-urlencode "fields[benefits]=Benefits listed" \
--data-urlencode "fields[experience_required]=Years of experience required" \
--data-urlencode "fields[seniority_level]=Junior, Mid, Senior, Lead, etc"
# Response:
# {
# "job_title": "Senior Software Engineer",
# "company": "Tech Corp",
# "location": "San Francisco, CA (Hybrid)",
# "salary_min": 180000,
# "salary_max": 220000,
# "salary_currency": "USD",
# "salary_period": "annual",
# "bonus": "15-20% annual bonus",
# "equity": "Stock options available",
# "benefits": ["Health insurance", "401k match", "Unlimited PTO"],
# "experience_required": "5+ years",
# "seniority_level": "Senior"
# }
# pip install webscraping_ai
# https://pypi.org/project/webscraping-ai/
from webscraping_ai import Client
client = Client(api_key="YOUR_API_KEY")
result = client.fields(
"https://job-board.com/job/senior-software-engineer",
fields={
"job_title": "The job title",
"company": "Company name",
"location": "Job location (city, state, remote)",
"salary_min": "Minimum salary as a number",
"salary_max": "Maximum salary as a number",
"salary_currency": "Currency (USD, EUR, etc)",
"salary_period": "Annual, monthly, or hourly",
"bonus": "Bonus information if mentioned",
"equity": "Equity/stock options if mentioned",
"benefits": "Benefits listed",
"experience_required": "Years of experience required",
"seniority_level": "Junior, Mid, Senior, Lead, etc",
},
)
print(result)
# Response:
# {
# "job_title": "Senior Software Engineer",
# "company": "Tech Corp",
# "location": "San Francisco, CA (Hybrid)",
# "salary_min": 180000,
# "salary_max": 220000,
# "salary_currency": "USD",
# "salary_period": "annual",
# "bonus": "15-20% annual bonus",
# "equity": "Stock options available",
# "benefits": ["Health insurance", "401k match", "Unlimited PTO"],
# "experience_required": "5+ years",
# "seniority_level": "Senior"
# }
// npm install webscraping-ai
// https://www.npmjs.com/package/webscraping-ai
import { WebScrapingAI } from 'webscraping-ai';
const client = new WebScrapingAI({ apiKey: 'YOUR_API_KEY' });
const result = await client.fields({
url: 'https://job-board.com/job/senior-software-engineer',
fields: {
job_title: 'The job title',
company: 'Company name',
location: 'Job location (city, state, remote)',
salary_min: 'Minimum salary as a number',
salary_max: 'Maximum salary as a number',
salary_currency: 'Currency (USD, EUR, etc)',
salary_period: 'Annual, monthly, or hourly',
bonus: 'Bonus information if mentioned',
equity: 'Equity/stock options if mentioned',
benefits: 'Benefits listed',
experience_required: 'Years of experience required',
seniority_level: 'Junior, Mid, Senior, Lead, etc',
},
});
console.log(result);
// Response:
// {
// "job_title": "Senior Software Engineer",
// "company": "Tech Corp",
// "location": "San Francisco, CA (Hybrid)",
// "salary_min": 180000,
// "salary_max": 220000,
// "salary_currency": "USD",
// "salary_period": "annual",
// "bonus": "15-20% annual bonus",
// "equity": "Stock options available",
// "benefits": ["Health insurance", "401k match", "Unlimited PTO"],
// "experience_required": "5+ years",
// "seniority_level": "Senior"
// }
<?php
// composer require webscraping-ai/webscraping-ai-php
// https://packagist.org/packages/webscraping-ai/webscraping-ai-php
require 'vendor/autoload.php';
use WebScrapingAI\Client;
$client = new Client('YOUR_API_KEY');
$result = $client->fields('https://job-board.com/job/senior-software-engineer', [
'job_title' => 'The job title',
'company' => 'Company name',
'location' => 'Job location (city, state, remote)',
'salary_min' => 'Minimum salary as a number',
'salary_max' => 'Maximum salary as a number',
'salary_currency' => 'Currency (USD, EUR, etc)',
'salary_period' => 'Annual, monthly, or hourly',
'bonus' => 'Bonus information if mentioned',
'equity' => 'Equity/stock options if mentioned',
'benefits' => 'Benefits listed',
'experience_required' => 'Years of experience required',
'seniority_level' => 'Junior, Mid, Senior, Lead, etc',
]);
print_r($result);
// Response:
// {
// "job_title": "Senior Software Engineer",
// "company": "Tech Corp",
// "location": "San Francisco, CA (Hybrid)",
// "salary_min": 180000,
// "salary_max": 220000,
// "salary_currency": "USD",
// "salary_period": "annual",
// "bonus": "15-20% annual bonus",
// "equity": "Stock options available",
// "benefits": ["Health insurance", "401k match", "Unlimited PTO"],
// "experience_required": "5+ years",
// "seniority_level": "Senior"
// }
# gem install webscraping_ai
# https://rubygems.org/gems/webscraping_ai
require 'webscraping_ai'
client = WebScrapingAI::Client.new(api_key: 'YOUR_API_KEY')
result = client.fields(
'https://job-board.com/job/senior-software-engineer',
fields: {
job_title: 'The job title',
company: 'Company name',
location: 'Job location (city, state, remote)',
salary_min: 'Minimum salary as a number',
salary_max: 'Maximum salary as a number',
salary_currency: 'Currency (USD, EUR, etc)',
salary_period: 'Annual, monthly, or hourly',
bonus: 'Bonus information if mentioned',
equity: 'Equity/stock options if mentioned',
benefits: 'Benefits listed',
experience_required: 'Years of experience required',
seniority_level: 'Junior, Mid, Senior, Lead, etc',
}
)
puts result.inspect
# Response:
# {
# "job_title": "Senior Software Engineer",
# "company": "Tech Corp",
# "location": "San Francisco, CA (Hybrid)",
# "salary_min": 180000,
# "salary_max": 220000,
# "salary_currency": "USD",
# "salary_period": "annual",
# "bonus": "15-20% annual bonus",
# "equity": "Stock options available",
# "benefits": ["Health insurance", "401k match", "Unlimited PTO"],
# "experience_required": "5+ years",
# "seniority_level": "Senior"
# }
// go get github.com/webscraping-ai/webscraping-ai-go/v4
// https://pkg.go.dev/github.com/webscraping-ai/webscraping-ai-go/v4
package main
import (
"context"
"fmt"
webscrapingai "github.com/webscraping-ai/webscraping-ai-go/v4"
)
func main() {
client, _ := webscrapingai.NewClient(&webscrapingai.Config{APIKey: "YOUR_API_KEY"})
result, _ := client.Fields(context.Background(), &webscrapingai.FieldsOptions{
URL: "https://job-board.com/job/senior-software-engineer",
Fields: map[string]string{
"job_title": "The job title",
"company": "Company name",
"location": "Job location (city, state, remote)",
"salary_min": "Minimum salary as a number",
"salary_max": "Maximum salary as a number",
"salary_currency": "Currency (USD, EUR, etc)",
"salary_period": "Annual, monthly, or hourly",
"bonus": "Bonus information if mentioned",
"equity": "Equity/stock options if mentioned",
"benefits": "Benefits listed",
"experience_required": "Years of experience required",
"seniority_level": "Junior, Mid, Senior, Lead, etc",
},
})
fmt.Println(result.Result)
}
// Response:
// {
// "job_title": "Senior Software Engineer",
// "company": "Tech Corp",
// "location": "San Francisco, CA (Hybrid)",
// "salary_min": 180000,
// "salary_max": 220000,
// "salary_currency": "USD",
// "salary_period": "annual",
// "bonus": "15-20% annual bonus",
// "equity": "Stock options available",
// "benefits": ["Health insurance", "401k match", "Unlimited PTO"],
// "experience_required": "5+ years",
// "seniority_level": "Senior"
// }
// Maven: ai.webscraping:webscraping-ai:4.0.0
// https://central.sonatype.com/artifact/ai.webscraping/webscraping-ai
import ai.webscraping.Client;
import ai.webscraping.Config;
import ai.webscraping.option.FieldsOptions;
import ai.webscraping.result.FieldsResult;
Client client = new Client(Config.builder().apiKey("YOUR_API_KEY").build());
FieldsResult result = client.fields(FieldsOptions.builder()
.url("https://job-board.com/job/senior-software-engineer")
.addField("job_title", "The job title")
.addField("company", "Company name")
.addField("location", "Job location (city, state, remote)")
.addField("salary_min", "Minimum salary as a number")
.addField("salary_max", "Maximum salary as a number")
.addField("salary_currency", "Currency (USD, EUR, etc)")
.addField("salary_period", "Annual, monthly, or hourly")
.addField("bonus", "Bonus information if mentioned")
.addField("equity", "Equity/stock options if mentioned")
.addField("benefits", "Benefits listed")
.addField("experience_required", "Years of experience required")
.addField("seniority_level", "Junior, Mid, Senior, Lead, etc")
.build());
System.out.println(result.getResult());
// Response:
// {
// "job_title": "Senior Software Engineer",
// "company": "Tech Corp",
// "location": "San Francisco, CA (Hybrid)",
// "salary_min": 180000,
// "salary_max": 220000,
// "salary_currency": "USD",
// "salary_period": "annual",
// "bonus": "15-20% annual bonus",
// "equity": "Stock options available",
// "benefits": ["Health insurance", "401k match", "Unlimited PTO"],
// "experience_required": "5+ years",
// "seniority_level": "Senior"
// }
// dotnet add package WebScrapingAI
// https://www.nuget.org/packages/WebScrapingAI
using WebScrapingAI;
var client = new WebScrapingAIClient(new WebScrapingAIClientOptions { ApiKey = "YOUR_API_KEY" });
var result = await client.FieldsAsync(new FieldsRequest {
Url = "https://job-board.com/job/senior-software-engineer",
Fields = new Dictionary<string, string> {
["job_title"] = "The job title",
["company"] = "Company name",
["location"] = "Job location (city, state, remote)",
["salary_min"] = "Minimum salary as a number",
["salary_max"] = "Maximum salary as a number",
["salary_currency"] = "Currency (USD, EUR, etc)",
["salary_period"] = "Annual, monthly, or hourly",
["bonus"] = "Bonus information if mentioned",
["equity"] = "Equity/stock options if mentioned",
["benefits"] = "Benefits listed",
["experience_required"] = "Years of experience required",
["seniority_level"] = "Junior, Mid, Senior, Lead, etc",
},
});
Console.WriteLine(result.Result);
// Response:
// {
// "job_title": "Senior Software Engineer",
// "company": "Tech Corp",
// "location": "San Francisco, CA (Hybrid)",
// "salary_min": 180000,
// "salary_max": 220000,
// "salary_currency": "USD",
// "salary_period": "annual",
// "bonus": "15-20% annual bonus",
// "equity": "Stock options available",
// "benefits": ["Health insurance", "401k match", "Unlimited PTO"],
// "experience_required": "5+ years",
// "seniority_level": "Senior"
// }
curl -G "https://api.webscraping.ai/ai/question" \
--data-urlencode "api_key=YOUR_API_KEY" \
--data-urlencode "url=https://job-board.com/job/senior-software-engineer" \
--data-urlencode "question=How does this compensation package compare to market rates? What are the standout benefits?"
# pip install webscraping_ai
# https://pypi.org/project/webscraping-ai/
from webscraping_ai import Client
client = Client(api_key="YOUR_API_KEY")
answer = client.question(
"https://job-board.com/job/senior-software-engineer",
question="How does this compensation package compare to market rates? What are the standout benefits?",
)
print(answer)
// npm install webscraping-ai
// https://www.npmjs.com/package/webscraping-ai
import { WebScrapingAI } from 'webscraping-ai';
const client = new WebScrapingAI({ apiKey: 'YOUR_API_KEY' });
const answer = await client.question({
url: 'https://job-board.com/job/senior-software-engineer',
question: 'How does this compensation package compare to market rates? What are the standout benefits?',
});
console.log(answer);
<?php
// composer require webscraping-ai/webscraping-ai-php
// https://packagist.org/packages/webscraping-ai/webscraping-ai-php
require 'vendor/autoload.php';
use WebScrapingAI\Client;
$client = new Client('YOUR_API_KEY');
$answer = $client->question(
'https://job-board.com/job/senior-software-engineer',
'How does this compensation package compare to market rates? What are the standout benefits?',
);
echo $answer;
# gem install webscraping_ai
# https://rubygems.org/gems/webscraping_ai
require 'webscraping_ai'
client = WebScrapingAI::Client.new(api_key: 'YOUR_API_KEY')
answer = client.question(
'https://job-board.com/job/senior-software-engineer',
question: 'How does this compensation package compare to market rates? What are the standout benefits?'
)
puts answer
// go get github.com/webscraping-ai/webscraping-ai-go/v4
// https://pkg.go.dev/github.com/webscraping-ai/webscraping-ai-go/v4
package main
import (
"context"
"fmt"
webscrapingai "github.com/webscraping-ai/webscraping-ai-go/v4"
)
func main() {
client, _ := webscrapingai.NewClient(&webscrapingai.Config{APIKey: "YOUR_API_KEY"})
answer, _ := client.Question(context.Background(), &webscrapingai.QuestionOptions{
URL: "https://job-board.com/job/senior-software-engineer",
Question: "How does this compensation package compare to market rates? What are the standout benefits?",
})
fmt.Println(answer)
}
// Maven: ai.webscraping:webscraping-ai:4.0.0
// https://central.sonatype.com/artifact/ai.webscraping/webscraping-ai
import ai.webscraping.Client;
import ai.webscraping.Config;
import ai.webscraping.option.QuestionOptions;
Client client = new Client(Config.builder().apiKey("YOUR_API_KEY").build());
String answer = client.question(QuestionOptions.builder()
.url("https://job-board.com/job/senior-software-engineer")
.question("How does this compensation package compare to market rates? What are the standout benefits?")
.build());
System.out.println(answer);
// dotnet add package WebScrapingAI
// https://www.nuget.org/packages/WebScrapingAI
using WebScrapingAI;
var client = new WebScrapingAIClient(new WebScrapingAIClientOptions { ApiKey = "YOUR_API_KEY" });
var answer = await client.QuestionAsync(new QuestionRequest {
Url = "https://job-board.com/job/senior-software-engineer",
Question = "How does this compensation package compare to market rates? What are the standout benefits?",
});
Console.WriteLine(answer);
Set competitive salary bands and ranges
Make competitive offers to top candidates
Identify roles at risk of market-driven attrition
Understand compensation trends by industry
More HR data solutions
Get started with 1,000 free API credits. No credit card required.