Career Page Job Postings Scraper
Pricing
from $0.30 / 1,000 job record saveds
Career Page Job Postings Scraper
Scrape public company career pages and linked ATS job listings into normalized job posting datasets.
Pricing
from $0.30 / 1,000 job record saveds
Rating
0.0
(0)
Developer
Hanna Nosova
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
Extract public job postings from company career pages and linked applicant tracking system (ATS) job pages. Use it to monitor hiring signals, build recruiting lead lists, enrich company data, or track labor-market changes without manually checking every careers page.
Value proposition
Career Page Job Postings Scraper turns messy public careers pages into a clean job-posting dataset you can plug into recruiting, sales, market-intelligence, and alerting workflows.
What does it do?
- Starts from one or more public company careers URLs.
- Detects job posting links on the page.
- Optionally follows linked public job detail pages.
- Normalizes every saved job into one dataset with consistent fields.
- Keeps going when one URL is blocked or returns no jobs, so you can process mixed lists safely.
Example input
{"startUrls": [{ "url": "https://stripe.com/jobs/search" },{ "url": "https://www.notion.com/careers" }],"maxItems": 50,"maxPagesPerSite": 25,"includeDetails": true,"sameDomainOnly": true,"keywords": ["engineer", "sales"],"excludeKeywords": ["intern"]}
Example output
{"companyName": "Notion","sourceUrl": "https://www.notion.com/careers","jobUrl": "https://jobs.ashbyhq.com/notion/05e14247-17c4-4e98-9a13-53828a4e2f13","title": "Outbound Business Development Representative, AMER","department": null,"team": null,"location": "New York, New York","workplaceType": null,"employmentType": null,"postedAt": null,"descriptionText": null,"applyUrl": "https://jobs.ashbyhq.com/notion/05e14247-17c4-4e98-9a13-53828a4e2f13","salaryText": null,"atsVendor": "ashbyhq","extractionMethod": "job-link","scrapedAt": "2026-07-12T14:02:42.961Z"}
Input settings
| Field | Type | Description |
|---|---|---|
startUrls | array | Public career page URLs to scan. |
maxItems | integer | Maximum saved job records across all URLs. |
maxPagesPerSite | integer | Maximum pages fetched per start URL, including linked job detail pages. |
includeDetails | boolean | Follow detected public job pages to enrich records when possible. |
keywords | array | Save only jobs matching at least one keyword in title, URL, location, or description. |
excludeKeywords | array | Skip jobs matching any excluded keyword. |
sameDomainOnly | boolean | Follow same-domain links plus recognized public ATS job hosts linked from the career page. |
Output fields
companyName- inferred company name when available.sourceUrl- original career page URL.jobUrl- canonical job posting URL.title- job title.department,team- department/team when detected.location- job location text when detected.workplaceType- remote/hybrid/on-site signal when detected.employmentType- full-time, part-time, contract, or internship signal when detected.postedAt- posted date when available.descriptionText- plain-text job description when detail extraction is available.applyUrl- application or job detail URL.salaryText- salary/pay range text when present.atsVendor- detected ATS vendor such as Ashby, Greenhouse, Lever, or Workable.extractionMethod- how the record was found.scrapedAt- ISO timestamp for the scrape.
Pricing
This actor uses pay-per-event pricing:
- Run start:
$0.005per run. - Saved job record: about
$0.50per 1,000 saved jobs before volume discounts.
| Tier | Price per saved job | Approx. per 1,000 jobs |
|---|---|---|
| Free | $0.000575 | 0.575 USD |
| Bronze | $0.000500 | 0.500 USD |
| Silver | $0.000390 | 0.390 USD |
| Gold | $0.000300 | 0.300 USD |
| Platinum | $0.000200 | 0.200 USD |
| Diamond | $0.000140 | 0.140 USD |
Who is it for
- Recruiting teams tracking hiring demand across target companies.
- Sales and lead generation teams looking for expansion or budget signals.
- Labor-market analysts monitoring role, department, and location trends.
- Data teams that need repeatable career-page data in a normalized format.
Use cases
- Monitor target accounts for new hiring signals.
- Build recruiter sourcing lists from public company websites.
- Track competitor hiring by department, location, or role family.
- Feed data warehouses with normalized public job posting records.
- Trigger alerts when target companies add matching roles.
Tips for best results
- Use public careers or jobs pages, not login-only applicant portals.
- Keep
sameDomainOnlyenabled unless you intentionally want broader crawling. - Use
keywordsto focus large career sites on specific teams or roles. - Increase
maxPagesPerSitefor companies with many paginated job listings.
Limits and responsible use
The actor only works with publicly reachable pages. It does not use user cookies, private accounts, or paid credentials, and it does not guarantee access to pages protected by CAPTCHA, login walls, strict rate limits, or hard anti-bot systems.
Legality
This actor is intended for public job-posting data. Always respect website terms, robots and access rules where applicable, privacy requirements, and employment-data regulations in your jurisdiction. Do not use it to collect private applicant data or access information behind authentication.
API usage
JavaScript
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('<ANNA_APIFY_USERNAME>/career-page-job-postings-scraper').call({startUrls: [{ url: 'https://stripe.com/jobs/search' }],maxItems: 50,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
Python
from apify_client import ApifyClientclient = ApifyClient('YOUR_APIFY_TOKEN')run = client.actor('<ANNA_APIFY_USERNAME>/career-page-job-postings-scraper').call(run_input={'startUrls': [{'url': 'https://stripe.com/jobs/search'}],'maxItems': 50,})items = client.dataset(run['defaultDatasetId']).list_items().itemsprint(items)
cURL
curl -X POST "https://api.apify.com/v2/acts/<ANNA_APIFY_USERNAME>~career-page-job-postings-scraper/runs?token=$APIFY_TOKEN" \-H 'Content-Type: application/json' \-d '{"startUrls":[{"url":"https://stripe.com/jobs/search"}],"maxItems":50}'
MCP and agent usage
Use this actor from Apify MCP to let AI agents monitor career pages and retrieve structured job postings. Connect compatible AI clients through https://mcp.apify.com/?tools=<ANNA_APIFY_USERNAME>/career-page-job-postings-scraper.
CLI setup:
$claude mcp add --transport http apify "https://mcp.apify.com/?tools=<ANNA_APIFY_USERNAME>/career-page-job-postings-scraper"
JSON config example:
{"mcpServers": {"apify": {"url": "https://mcp.apify.com/?tools=<ANNA_APIFY_USERNAME>/career-page-job-postings-scraper"}}}
Example prompts:
- "Find public sales and engineering jobs from these company career pages."
- "Monitor this list of career URLs and return new remote roles."
- "Extract normalized job postings and include job URLs and locations."
Related actors
- Google Maps Places Scraper - enrich companies and local hiring targets.
- Dice Jobs Scraper - collect technology job postings from Dice.
- Booking.com Hotels Scraper - monitor travel and hospitality businesses.
FAQ
Can it scrape every career site?
No. Career pages vary widely. The actor is designed to return partial results and skip blocked pages instead of failing the whole run.
Does it need proxies or cookies?
No cookies are required. The first version is HTTP-first and targets public pages.
Can I filter by role or location?
Yes. Use keywords and excludeKeywords; filtering checks title, URL, location, and description when available.
Will it follow ATS links?
Yes. With includeDetails enabled it can follow public ATS job URLs linked from the career page, subject to maxPagesPerSite.
Support
Questions or missing fields? Open an issue on the actor page and include:
- The run ID or run URL.
- The input JSON you used.
- The public career page URL you expected to scrape.
- The expected output and actual output you received.
- Any reproducible public URL that demonstrates the missing or incorrect job data.