Company Job Postings Scraper avatar

Company Job Postings Scraper

Pricing

$2.00 / 1,000 results

Go to Apify Store
Company Job Postings Scraper

Company Job Postings Scraper

Extract live job postings from company career pages (Greenhouse, Lever, Ashby, Workable, Recruitee, SmartRecruiters). Clean, normalized JSON with salaries, locations, remote flags. Company-level hiring data — no LinkedIn, no personal data.

Pricing

$2.00 / 1,000 results

Rating

0.0

(0)

Developer

Kurt Blair

Kurt Blair

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

0

Monthly active users

2 days ago

Last modified

Share

Job Postings Scraper — Company Career Pages (Greenhouse, Lever, Ashby & more)

Extract live job postings directly from company career pages — the hiring data source that never needs LinkedIn or Indeed. Point the Actor at any list of companies and get a clean, normalized dataset of every open role: title, department, locations, remote status, employment type, salary ranges, posting dates, and application URLs.

Supports the ATS platforms behind most tech & startup career pages:

PlatformCoverageSalary dataDetection
GreenhouseFull boardPay ranges where published✅ auto
LeverFull boardStructured salaryRange where published✅ auto
AshbyFull boardStructured compensation tiers✅ auto
WorkableFull boardParsed from description✅ auto
RecruiteeFull boardStructured where published✅ auto
SmartRecruitersFull board (paginated)Parsed from description✅ auto

Why scrape career pages instead of job boards?

  • Fresher: postings appear on the company's own board before (and sometimes instead of) aggregators.
  • Complete: no aggregator filtering — you see every public role, including the ones never syndicated.
  • Compliant: this Actor reads the same public, logged-out JSON endpoints the career pages themselves use. It collects company-level data only — job postings, not people. No LinkedIn, no Indeed, no personal data.
  • Cheap: no headless browser, no CAPTCHAs — results stream in seconds.

What can you do with hiring data?

  • Sales signals / ABM: a company hiring "Salesforce Administrator" is buying Salesforce tooling. Route accounts to your reps the week the signal appears.
  • Recruiting & talent intel: track which competitors are hiring, for what roles, where, and at what salary bands.
  • Market & investment research: headcount growth by function is a leading indicator. Watch a portfolio or a whole sector.
  • Job boards & aggregators: build a niche job board from the source of truth.
  • AI agents & RAG: clean JSON, stable schema — pipe it into your agent, vector DB, Clay table, or spreadsheet without post-processing.

Input

Three ways to specify a company — mix them freely:

{
"companies": [
"https://jobs.lever.co/mistral",
"greenhouse:vercel",
"https://ramp.com",
"linear"
],
"remoteOnly": false,
"titleKeywords": ["engineer", "data"],
"maxTotalResults": 1000
}
  1. ATS board URL — fastest, zero ambiguity (https://boards.greenhouse.io/vercel, https://jobs.ashbyhq.com/ramp, …)
  2. platform:slug — explicit pair (lever:mistral, workable:acme)
  3. Company website or bare name — the Actor fetches the careers page, finds the ATS link automatically, and falls back to probing all six platforms.

Optional filters: title keywords, location keywords, remote-only, posted-within-N-days, per-company and total result caps (cost control), full descriptions on/off.

Output (real example rows)

Data captured from live boards on 2026-07-21:

companytitledepartmentlocationremotesalarypublishedats
RampSecurity Engineer, CloudEngineeringNew York, NY (HQ) (+ Miami, Remote US/CA)true$211.4K – $290.6K USD/yr2026-04-07ashby
VercelAccount Executive- Startups, GreenfieldHybrid - San Francisco, New York City, Austinfalse2025-08-19greenhouse
MistralAccount Executive – AI for CitizensBusinessParisfalse2025-07-28lever

Full JSON per job (real record, abbreviated description omitted via includeDescription: false):

{
"company": "Ramp",
"companySlug": "ramp",
"ats": "ashby",
"jobId": "34413f8d-26bf-4bbc-8ade-eb309a0e2245",
"title": "Security Engineer, Cloud",
"department": "Engineering",
"team": "Backend",
"employmentType": "FullTime",
"location": "New York, NY (HQ)",
"allLocations": ["New York, NY (HQ)", "Miami, FL", "Remote (US)", "Remote (Canada)"],
"country": "USA",
"isRemote": true,
"workplaceType": "Hybrid",
"salaryMin": 211400,
"salaryMax": 290600,
"salaryCurrency": "USD",
"salaryInterval": "year",
"salarySummary": "$211.4K – $290.6K • Offers Equity",
"publishedAt": "2026-04-07T17:12:35.753Z",
"updatedAt": null,
"url": "https://jobs.ashbyhq.com/ramp/34413f8d-26bf-4bbc-8ade-eb309a0e2245",
"applyUrl": "https://jobs.ashbyhq.com/ramp/34413f8d-26bf-4bbc-8ade-eb309a0e2245/application",
"sourceEndpoint": "https://api.ashbyhq.com/posting-api/job-board/ramp",
"scrapedAt": "2026-07-21T00:19:43.009Z"
}

Every field is present on every row (with null where the ATS doesn't publish it), so the dataset drops straight into Sheets, BigQuery, Clay, or a dataframe.

Pricing & typical cost

Pay per result — you only pay for jobs actually saved. Filters and caps (maxTotalResults, maxJobsPerCompany) are applied before billing, so a title-filtered run costs a fraction of a full dump. Monitoring 500 companies weekly at ~40 open roles each ≈ 20,000 results per run.

Scheduling & integrations

  • Schedule the Actor (e.g. daily) and diff jobId sets downstream to detect newly opened/closed roles.
  • Use the Apify API, webhooks, or the dataset export (JSON, CSV, Excel) — plus native integrations with Make, Zapier, n8n, Google Sheets, and MCP for AI agents.

FAQ

Is this legal? The Actor reads public, logged-out JSON endpoints that the companies' own career pages call, and collects only company-level information (job postings). It does not touch LinkedIn, Indeed, or any personal data.

How do I find a company's board/slug? Usually you don't need to — pass the company website and let auto-detection work. If you want to be explicit, open the company's careers page and copy the jobs.lever.co/..., boards.greenhouse.io/..., jobs.ashbyhq.com/... etc. link.

A company wasn't found. Why? Either it uses an unsupported ATS (e.g. Workday, iCIMS, SAP SuccessFactors — on the roadmap), its board has no public roles, or its careers page hides the ATS link behind JavaScript. The run log lists every unresolved company with a tip. Passing the exact board URL always works.

Do I get salaries for every job? Only where the company publishes them. Ashby and Lever expose structured compensation most often; for the rest the Actor parses ranges out of the description text ("$120,000 - $150,000", "€80k–100k", etc.).

What about descriptions? Off by default to keep datasets light. Set includeDescription: true to get plain-text and HTML descriptions. (On SmartRecruiters this needs one extra request per job, so it's slower there.)

Rate limits / blocking? The endpoints are public APIs designed for careers-page traffic; the Actor uses gentle concurrency, retries with backoff, and optional Apify Proxy. Runs are HTTP-only — no browser — so they're fast and cheap.

Which platforms are next? Teamtailor, Personio, BambooHR, and JazzHR are the shortlist. Open an issue to vote.