Company Jobs & Salary Scraper
Pricing
from $1.20 / 1,000 job founds
Company Jobs & Salary Scraper
Every open role at any company, straight from the job board it publishes on — Greenhouse, Lever, Ashby or SmartRecruiters. Salary ranges included where they exist, title, department, location, remote flag and posting date. Give it a company name; it finds the board.
Pricing
from $1.20 / 1,000 job founds
Rating
0.0
(0)
Developer
Eimantas V
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
5 days ago
Last modified
Categories
Share
Every open role at any company, read straight from the job board it publishes on — Greenhouse, Lever, Ashby or SmartRecruiters — with the salary range wherever one exists.
openai 734 jobs 85% priced median $234,000 86 posted this week 471 remotedatabricks 800 jobs 53% priced median $182,000 38 posted this week 207 remotepalantir 318 jobs 74% priced median $126,000 Lever + SmartRecruitersramp 136 jobs 98% priced median $167,300 124 remotestripe 568 jobs 3% priced median $158,400Staff Software Engineer, Forward Deployed AI $189,000 – $330,000 RemoteDesign Engineer $172,000 – $440,000 New York
2,590 roles from 7 companies in 17 seconds. No API key, no login, no browser. These are the JSON endpoints the platforms publish so job boards can consume them.
Give it a name, not a platform
You do not need to know which system a company uses. Type stripe and all four boards are searched; whichever list the company answers on is the one you get.
Paste the careers URL if that is easier — https://boards.greenhouse.io/stripe reduces to stripe. Write greenhouse:stripe to pin one and skip the search.
A company can be on two at once. Palantir has 308 roles on Lever and 10 on SmartRecruiters. Both are jobs someone could apply for, so both are returned, and platformsFound says where each came from.
Salary, which is the part nobody else gives you
1,430 of 2,590 postings in one run carried a pay figure. Coverage depends entirely on the platform:
| Platform | Pay coverage | How it is carried |
|---|---|---|
| Ashby | 85–98% | A structured field. OpenAI 621/734, Ramp 130/136 |
| Lever | ~75% | Stated in the description text |
| Greenhouse | 3–53% | Description only, and most boards say nothing |
Every figure is normalised: salaryMin, salaryMax, salaryCurrency, salaryPeriod, plus annualisedMin / annualisedMax so an hourly rate and a yearly one sort on one scale. salaryRaw keeps the exact text it was read from, so a surprising number can be checked against its source, and salarySource says whether it came from a field or from prose.
What you get
Per role — title, department, team, location and every other location it is open in, isRemote, workplaceType, country, employmentType, the full salary block, hasEquity, postedAt, daysSincePosted, jobUrl, applyUrl, jobId, and the description on request.
Per company — which platforms it was found on, jobs returned, pay coverage, median salary and its currency, remote count, postings in the last 7 and 30 days, top departments, top locations, countries, newest posting.
Three ready-made views: Open roles, Pay data, Company summary.
Who this is for
- Sales and GTM — hiring is a buying signal. Five new AE openings means a team expanding;
postedLast7DaysandtopDepartmentsare that signal. - Recruiters and job boards — a clean feed with stable
jobIds to diff on. - Compensation benchmarking — real ranges by title, company and location, from the source rather than self-reported.
- Candidates and career tools — filter by remote, department and a salary floor across every company you care about.
Input
{"companies": ["stripe", "databricks", "openai", "ramp"],"keywords": ["engineer"],"excludeKeywords": ["intern", "manager"],"remoteOnly": true,"requireSalary": true,"minSalary": 180000}
That run returns 115 roles out of 2,238 — every one remote, priced, and paying over the floor.
| Option | Default | Notes |
|---|---|---|
companies | — | Token or careers URL. greenhouse:stripe pins a platform |
platforms | all four | Narrow it if you already know where a company posts |
keywords / excludeKeywords | — | Title, department, team, and description when included |
departments | — | Substring: Engineering catches Engineering - Pipeline |
locations | — | Matches any location a role lists; remote matches the flag |
remoteOnly | false | |
postedWithinDays | — | Undated postings are kept |
minSalary | — | Against the top of the range; unpriced roles kept |
requireSalary | false | Drops unpriced roles instead |
includeDescription | false | Most of the payload. Pay is read either way |
maxJobsPerCompany | 1000 |
Six things worth knowing
Each was found by running against live boards.
A company's board can be found without knowing its platform, and the search is cheap. All four are asked at once and a fake name cleanly finds nothing. What it cannot do is find a company on Workday or Taleo, which between them hold most large-enterprise hiring and publish nothing readable. Visa returns 2 roles because that is genuinely all it lists on SmartRecruiters; the rest are on Workday. A summary row with errorCode: NO_BOARD means the token was not found, not that nobody is hiring — those two are never blurred.
Choosing one board per company was wrong twice over. Palantir came back with 10 roles when it has 308, because the router picked whichever platform reported more and the probes were not measuring the same thing — Lever has no count endpoint, so asking for one posting reported a board of 308 as holding one, while SmartRecruiters reports its true total regardless. Rather than fix the comparison, the comparison is gone: every board that answers is read and merged.
Greenhouse hides pay in prose, and asking for jobs without prose used to discard it. The description was only fetched when the caller wanted descriptions in the output, which silently threw away the pay for 1,368 postings in one run. It is now always fetched and only dropped from the output, taking coverage from 9% to 55%.
A job description is full of money that is not salary. Greenhouse gave up $500M — the funding round. Lever gave up contract values in excess of $0.5M. Both are plausible annual figures. Millions are refused outright, because salaries are written $257K and never $0.257M.
Benefits did more damage than funding ever did. "Competitive compensation, 100% employer match on 401k contributions up to 10% (cap at $10,000)" names compensation, sits beside the pay talk, and reads as a $10,000 salary. It mispriced 41 of 80 roles at one company. Benefits vocabulary is now excluded before pay context is even considered.
Greenhouse escapes its descriptions twice. A pay range is three spans with — between them, and the whole thing is entity-encoded again on the way out, so the separator arrives as —. Decode once and the literal text mdash; survives, which is not a dash, so no range ever matches and the single-value fallback takes the bottom of it — 427 of 800 Databricks salaries understated by the full width of their own range. Decoding twice turned 0 ranges into 423.
Output
{"recordType": "job","company": "Databricks","platform": "greenhouse","title": "Senior Software Engineer - Data Platform","department": "Engineering","location": "San Francisco, CA","allLocations": ["San Francisco, CA", "Seattle, WA"],"isRemote": false,"salaryMin": 145700, "salaryMax": 200300,"salaryCurrency": "USD", "salaryPeriod": "year","annualisedMin": 145700, "annualisedMax": 200300,"hasEquity": true,"salaryRaw": "$145,700 — $200,300","salarySource": "description","daysSincePosted": 3,"jobUrl": "https://boards.greenhouse.io/databricks/jobs/..."}
Set flattenOutput: true for CSV.
Honest limits
- Four platforms, not the whole market. Greenhouse, Lever, Ashby and SmartRecruiters publish openly. Workday and Taleo do not, and Teamtailor wants an API key. A company on those returns
NO_BOARD. - Most Greenhouse boards publish no pay at all. Stripe states a figure on 16 of 568 postings. That is Stripe's choice, not a parsing failure, and
salaryCoveragereports it per company so you can see which is which. - A salary read from prose is a reading.
salarySourcetells you which figures came from a field and which from text, andsalaryRawshows the exact string, so anything surprising can be checked in one glance. - Annualising assumes 2,080 hours a year, twelve months, fifty-two weeks. It is only ever derived from a period the posting actually stated.
- Ashby publishes no company name, so those rows carry the token you supplied rather than a display name. Greenhouse, Lever and SmartRecruiters give a real one.
postedAtis often missing on SmartRecruiters. Undated postings are kept when filtering on age, because an unknown date is not evidence a role is stale.- Companies not found, postings your filters removed, and postings already returned by another entry in your list are never charged.
Pricing
| Event | Price | When |
|---|---|---|
| Actor start | $0.005 | Once per run |
| Company searched | $0.006 | Per company found and read, including its summary |
| Job found | $0.0012 | Per open role returned |
| Salary found | $0.002 | Only when a pay figure was established |
About $2.30 per 1,000 roles on a board where half publish pay. The 2,590-role run above costs $6.02. A daily watch on twenty companies is a few cents.
LinkedIn and Indeed scrapers charge more, fight anti-bot, and hand you no salary.
Tips
- Run daily and diff on
jobId. New ids are new openings; ids that vanish are roles filled or pulled. - Watch
postedLast7Daysper company. That is the hiring-signal number — a jump means a team is scaling. topDepartmentstells you what kind of growth it is. Five open sales roles and no engineers means something very different from the reverse.- Sort on
annualisedMaxto compare pay across hourly, monthly and yearly postings honestly. - Leave
includeDescriptionoff unless you need the text. It is most of the payload and costs you no pay data.