Career Site Jobs API: Search Company Job Boards, New Jobs Feed
Pricing
from $2.40 / 1,000 jobs
Career Site Jobs API: Search Company Job Boards, New Jobs Feed
Search jobs straight from company career sites by title, place, company, words and time, from an index refreshed about every six hours. Full text and direct apply links. A named feed returns only what is new. For job boards, recruiters and sales teams watching who is hiring. $3 per 1,000 jobs.
Pricing
from $2.40 / 1,000 jobs
Rating
0.0
(0)
Developer
Zaiq
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
Career Site Jobs API: search jobs straight from company job boards

Search jobs straight from company career sites by title, place, company, words in the text and time. Every job comes from a company's own board on Greenhouse, Lever or Ashby, with the full description and a direct apply link: about 330,000 open jobs from 11,700 companies.
Name a feed and schedule it, and every run returns only the jobs new since the last one. Built for job boards, recruiters, sales teams following who is hiring and labour-market research, at $3 per 1,000 jobs.
What you get
| Field | What it holds |
|---|---|
| The job | jobId, title, description or descriptionHtml, department, employmentType, salary, isRemote |
| The place | location, country |
| The employer | company, ats, board |
| The dates | postedAt, updatedAt, firstSeenAt, lastSeenAt, closedAt |
| The links | url, applyUrl |
What people use it for
- Fill a job board: add fresh employer jobs with apply links, automatically, every day
- Hiring signals for sales: see which companies just started hiring for what your product helps with
- Recruitment research: find every company hiring for a role in a place
- Competitor watch: follow what a rival is hiring for, by company name
- Labour-market data: track roles, skills and pay across thousands of employers
- AI agents: a searchable jobs source inside any workflow
How to use it
- Enter job titles and, if you want, places, countries or companies.
- Choose Posted within.
- For a daily feed, give it a feed name and schedule the run.
- Press Start and download the rows.
Input
| Field | Example | Notes |
|---|---|---|
| Job titles | software engineer | Any line can match. Words in one line must appear together. |
| Leave out titles with | intern | Removes unwanted roles. |
| Places | London | Words in the job's location, or Remote. |
| Countries | US, GB, DE | Two-letter codes. |
| Remote jobs only | off | Only jobs marked remote. |
| Posted within | Last 7 days | From the last hour to any time. |
| Feed name | my-job-board | Later runs return only what is new. |
| Most jobs a run | 1000 | Up to 20,000. |
| Words in the description | Kubernetes | Searches the full text. |
| Companies | Example Inc | Only these employers. |
| Career systems | Greenhouse | Empty means all three. |
| Description | Plain text | Or HTML, both, or none. Same price. |
| Closed jobs instead | off | Jobs that left their board, kept 90 days. |
Output
Each result is one row in the run's dataset (download it as JSON, CSV, Excel, XML or HTML, or read it through the API). An example row (values shortened):
{"kind": "job","jobId": "greenhouse:examplecorp:4749457","title": "Software Engineer, Platform","company": "Example Corp","location": "Remote, US","country": "US","isRemote": true,"department": "Engineering","employmentType": "Full-time","salary": "$100,700 - $167,800","postedAt": "2026-10-30T16:08:45Z","updatedAt": "2026-10-30T16:08:45Z","firstSeenAt": "2026-11-01T19:46:12Z","lastSeenAt": "2026-11-02T01:48:03Z","closedAt": null,"url": "https://job-boards.greenhouse.io/examplecorp/jobs/4749457","applyUrl": "https://job-boards.greenhouse.io/examplecorp/jobs/4749457","ats": "greenhouse","board": "examplecorp","description": "About the role..."}
A record named SUMMARY in the run's key-value store says what each input returned, with any notes (for example an account that does not exist), what was charged and how much traffic the run used.
Pricing
- $3 per 1,000 jobs on Free and Bronze, $2.70 on Silver, $2.40 on Gold, less above, with the description included.
- $0.01 a run to start.
- A search with no jobs, or a feed with nothing new, costs only the start fee. The Free plan returns 20 jobs a run.
What typical jobs cost at the list price:
| Job | Cost |
|---|---|
| 100 jobs | $0.31 |
| 5,000 jobs | $15.01 |
| A daily feed of 300 new jobs | $0.91 a day |
On Apify's Scale and Business plans the per-event prices are lower (Store discounts). Set Maximum cost per run and the Actor stops cleanly when it is reached: you never pay more than that.
Tips
- Use a feed name and a schedule: you pay only for jobs you haven't had.
- Search by company to follow one employer's hiring.
- Closed jobs with a feed name tell a job board which ads to take down: each run returns only the jobs closed since the last one.
salaryis what the employer states, read from the system or the text, so it is often empty.
Use it through the API
Python
from apify_client import ApifyClientclient = ApifyClient("<YOUR_APIFY_TOKEN>")run = client.actor("zaiq/career-site-jobs-api").call(run_input={"titles": ["software engineer"], "postedWithin": "7d", "maxJobs": 10})for row in client.dataset(run.default_dataset_id).iterate_items():print(row)
JavaScript
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });const run = await client.actor('zaiq/career-site-jobs-api').call({"titles": ["software engineer"], "postedWithin": "7d", "maxJobs": 10});const { items } = await client.dataset(run.defaultDatasetId).listItems();
HTTP (one call, results back)
curl -X POST 'https://api.apify.com/v2/acts/zaiq~career-site-jobs-api/run-sync-get-dataset-items?token=<YOUR_APIFY_TOKEN>' \-H 'Content-Type: application/json' \-d '{"titles": ["software engineer"], "postedWithin": "7d", "maxJobs": 10}'
Integrations and schedules
- Schedules: run it every hour, day or week from the Apify Console (Schedules) and keep a history of results.
- Make, Zapier, n8n, Google Sheets, Slack, Airtable: connect it through Apify's integrations, or send each finished run to a webhook.
- Datasets: results stay in the run's dataset; export them or read them by API whenever you need them.
Use it with AI agents (MCP)
Add Apify's MCP server with this Actor already pinned (https://mcp.apify.com?tools=zaiq/career-site-jobs-api) to Claude, ChatGPT, Cursor, VS Code or any MCP client. The agent can find this Actor and run it for you: ask it for Find remote data engineer jobs posted this week at companies on Ashby and list who is hiring most. AI agents can also pay for runs directly through Apify's agentic payments.
Limits
- Coverage: about 11,700 company boards and 330,000 open jobs on Greenhouse, Lever and Ashby at launch. A company on another system won't appear, so this is not every job on the internet.
- Some boards belong to recruiters, staffing firms or franchises rather than one employer, and a few post the same job for many towns. Put words like staffing, recruiting, talent, personnel in Leave out companies to drop most of them.
- Freshness: boards are re-read about every six hours, so a job can take that long to appear.
countryis read from the location words where the employer doesn't state it, so a vague location such as Remote stays blank, about 7% of jobs. A job in several countries carries the first one.postedAtis the date the employer's system gives. A company can repost an old job as new.- Job descriptions belong to the employers. It's for you to check your use of them fits, especially if you publish them.
- Companies and jobs only: no people are looked up or collected, though an employer's own job text sometimes names a contact.
FAQ
Where do the jobs come from?
The public job board feeds of Greenhouse, Lever and Ashby, which those systems publish for outside use. Our server re-reads them about every six hours. The starting list of boards is LastRound AI's ATS Company Directory (CC BY 4.0, github.com/fyrosofttech/lastroundai-hiring-data).
How is a feed different from Posted within?
A feed remembers where its last run stopped and carries on from there, so nothing is repeated or missed, even if a run hits its limit. Posted within still applies, so an old job on a newly added board stays out.
Is this every job at a company?
It is every job on that company's public board on these systems. Jobs a company lists elsewhere won't appear.
Can I get closed jobs?
Yes. Switch on Closed jobs, newest closures first. They are kept for 90 days after leaving the board, and Posted within then counts from when the job closed. Add a feed name to get only the jobs closed since the last run.
Do I need any keys?
No.
Related Actors from Zaiq
- indeed-jobs-scraper: job ads from Indeed in 62 countries
- ats-jobs-scraper: jobs from career systems you name by board
- google-jobs-scraper: Google's job listings
Support
Questions, a site that changed, or a field you need? Open an issue on this Actor's Issues tab: we answer there, usually within a day.
Also found as: career site jobs API, ATS jobs API, Greenhouse jobs scraper, Lever jobs API, Ashby jobs API, job posting API, jobs data feed, hiring signals, job board feed.