Job Salary Transparency Scraper avatar

Job Salary Transparency Scraper

Pricing

from $1.80 / 1,000 salary-job-results

Go to Apify Store
Job Salary Transparency Scraper

Job Salary Transparency Scraper

Scrape public job listings and keep only jobs with visible salary. Returns flat, normalized salary rows - title, company, location, salary range, currency, pay period, remote status, and transparency tags. No login, no cookies, no residential proxy.

Pricing

from $1.80 / 1,000 salary-job-results

Rating

0.0

(0)

Developer

Delowar Munna

Delowar Munna

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Share

Job Salary Transparency Scraper

Scrape public job listings and keep only the jobs that show real salary / pay data, normalized into clean, flat, CSV-ready rows. Every row carries first-class compensation fields: min/max salary, currency, pay period, range vs. exact, salary source, and a salary-transparency score. Built for compensation analysts, recruiters, HR-tech teams, labour-market researchers, and sales teams.

No login, no cookies, no session tokens, no residential proxy. The actor uses free public sources over HTTP, so it stays fast and cost-predictable. You pay one flat event per unique salary-visible job row that passes your filters.

✨ Why this scraper

  • Salary-first — unlike generic job scrapers, this one filters and normalizes compensation as the headline output. No salary, no charge.
  • Public sources only — public ATS JSON APIs (Greenhouse, Lever, Ashby, SmartRecruiters), the Remotive search API, and any career page that exposes JSON-LD JobPosting data.
  • No AI, no paid salary vendors — salary is parsed from structured fields, page JSON-LD, and visible text. Vague text like "competitive salary" is never turned into a fake number.
  • 29 flat fields — drops straight into Sheets/Excel/CRMs.
  • Pay-Per-Event — one flat salary-job-result event per saved unique salary-visible job. Duplicates and filtered rows are never charged.

📥 Input

Provide at least one of Start URLs (URL mode) or Search keywords (query mode).

FieldTypeDefaultDescription
startUrlsarray[]Public board/career/job URLs. Greenhouse/Lever/Ashby/SmartRecruiters boards are detected automatically; any other page is read via JSON-LD.
queriesarray[]Keyword search terms (searched via Remotive — the only free cross-company keyword source).
locationstring""Optional location filter.
countrystring"US"Salary currency default + location parsing. One of US, CA, UK, AU, DE, FR, IN, GLOBAL.
sourcesarray["public_ats","remotive","google_jobs_compatible"]Sources for query mode. custom_urls_only uses Start URLs exclusively.
maxResultsinteger100Max saved unique salary-visible rows (1–50000).
salaryRequiredbooleantrueSave only rows with visible salary.
minSalaryintegernullMinimum salary (compared within matching period only).
salaryPeriodstring"any"any, hour, day, week, month, year.
currencystring"any"any, USD, CAD, GBP, AUD, EUR, INR.
remoteOnlybooleanfalseKeep only remote/hybrid jobs.
includeDescriptionbooleanfalseStore full job description (off = snippet only).
deduplicatebooleantrueDrop duplicate rows by job ID / canonical URL.
proxyConfigurationobject{ "useApifyProxy": true }Apify Datacenter / no proxy / custom URLs. Residential is rejected.

Sample input — URL mode (public ATS boards)

{
"startUrls": [
"https://boards.greenhouse.io/figma",
"https://jobs.lever.co/voiceflow",
"https://jobs.ashbyhq.com/Notion"
],
"salaryRequired": true,
"currency": "USD",
"maxResults": 100,
"proxyConfiguration": { "useApifyProxy": true }
}
{
"queries": ["software engineer", "data analyst"],
"sources": ["remotive"],
"country": "US",
"salaryRequired": true,
"salaryPeriod": "year",
"minSalary": 90000,
"remoteOnly": true,
"maxResults": 100,
"proxyConfiguration": { "useApifyProxy": true }
}

📤 Output

The dataset opens on the Salary-visible jobs table view — one flat row per salary-visible job (29 fields):

Salary-visible jobs — table view

Sample record — Salary-visible jobs

{
"job_id": "rm_1919266",
"job_url": "https://remotive.com/remote-jobs/software-development/senior-independent-ai-engineer-architect-1919266",
"source": "remotive",
"source_company_board_url": "https://remotive.com",
"job_title": "Senior Independent AI Engineer / Architect",
"company_name": "A.Team",
"location": "Americas, Europe, Israel",
"country": "US",
"remote_type": "remote",
"employment_type": "contract",
"posted_at": "2026-05-16",
"scraped_at": "2026-06-07T04:46:16.652Z",
"salary_visible": true,
"salary_text": "$120 - $170 /hour",
"salary_min": 120,
"salary_max": 170,
"salary_currency": "USD",
"salary_period": "hour",
"salary_is_range": true,
"salary_confidence": "medium",
"salary_source": "description_text",
"salary_context": "$120 - $170 /hour Senior Independent AI Engineer / Architect Remote | Americas, Europe, or Israel. A·Team is an invite-only network of senior AI engineers, ML engineers, and AI architects building production AI systems…",
"transparency_reason_tags": "explicit_salary_range;hourly_pay_detected;currency_inferred_from_country;salary_from_description_text;remote_salary",
"description_snippet": "Senior Independent AI Engineer / Architect Remote | Americas, Europe, or Israel. Most AI engineers can find work. Finding work worth doing is harder. A.Team is an invite-only network of senior AI engineers, ML engineers, and AI architects building production AI systems for startups, enterprises, and global companies…",
"job_description": null,
"input_url": "https://remotive.com",
"input_query": "data analyst",
"salary_transparency_score": 90,
"salary_transparency_label": "strong"
}

The run also writes a RUN_SUMMARY record to the default key-value store with counts for inputs, raw results, salary-visible found, results saved, duplicates removed, filtered out, charged events, blocked requests, retries, sources used, and runtime.

💲 Pricing — Pay Per Event

One event: salary-job-result, charged once per unique salary-visible row that passed all filters and was successfully pushed to the dataset. Duplicates, filtered-out rows, and failed requests are never charged.

🚦 Proxy policy

Use Apify Datacenter proxy or no proxy for normal runs — both work reliably for public ATS / career-page JSON at this actor's conservative concurrency.

Apify Residential proxy is not supported. The actor fails at startup if apifyProxyGroups includes RESIDENTIAL. Reason: in pay-per-event actors, residential bandwidth (~/GB) is billed to the developer, not the run user, so a single bandwidth-heavy run could exceed the per-result event revenue.

If you genuinely need residential routing, supply your own residential provider via the proxy editor's Custom proxy URLs field — that traffic goes through your provider, not Apify, and is unaffected:

http://user:pass@proxy.iproyal.com:12321
http://user:pass@proxy.brightdata.com:22225
http://user:pass@proxy.oxylabs.io:7777

ℹ️ Notes & limits

  • Indeed and Seek are not supported in V1 — they are anti-bot heavy and unreliable over plain HTTP without a browser or residential proxy. They are planned as future sources.
  • Public ATS boards have no cross-company keyword search, so keyword queries run through Remotive. To scrape an ATS board, paste its URL in startUrls.
  • Salary is parsed from structured fields and JSON-LD first (high confidence), then from visible description text (medium/low). The original salary string is preserved verbatim in salary_text.
  • No login, cookies, session tokens, or private API keys are used anywhere.