Jobs Search API – Search Career Sites by Job Title & Country
Pricing
from $3.00 / 1,000 job results
Jobs Search API – Search Career Sites by Job Title & Country
Search jobs by title, country, and keyword across the career sites of hundreds of companies on Workday, Greenhouse, Lever, Ashby, and Workable. Live data straight from each employer's board, with new and closed job alerts.
Pricing
from $3.00 / 1,000 job results
Rating
0.0
(0)
Developer
Pharaoh Data
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
7 hours ago
Last modified
Categories
Share
Search jobs straight from employers' own career sites
Type a job title and a country. This Actor searches the career sites of 650 companies on Workday, Greenhouse, Lever, Ashby, and Workable and returns every matching job with title, locations, ISO country codes, department, salary when published, posting date, apply link, and full description.
The jobs come live from each employer's own board at the moment you run it. Nothing is a stale copy of a job site, and nothing is reposted by an agency. Save a search as a scheduled task and each run tells you which jobs are new, updated, or closed.
Built for:
- Job boards and newsletters: fill a niche board ("ML jobs in the UAE", "remote data jobs in Europe") with fresh roles direct from employers.
- Recruiters and sourcers: see who is hiring for the role you recruit for, by country, every morning.
- Sales and partnerships teams: hiring for a role is a buying signal. Find companies hiring data engineers in Saudi Arabia and reach them first.
- Researchers and analysts: measure demand for a skill or a role across hundreds of employers.
How it works
- A built-in index of 665 company job boards from 651 companies (refreshed on 2026-10-18, with about 149,000 jobs at the time; 91 of the boards hire in the Gulf) records which countries each board hires in and which words its job titles use.
- Your search picks only the boards that can match: for example, boards with jobs in the UAE whose titles contain "data" and "engineer". They're ranked by how many jobs they have in your countries.
- Those boards are read live, and every job is checked against your filters. Workday sites are searched with their own search box, so only matching jobs are downloaded.
| Direct from employers | Every job links to the employer's own posting and apply page. No aggregator duplicates, no agency reposts. |
| Countries that are right | You can enter Germany, AE, or "Saudi Arabia". Locations are read as countries even when they only name a state, a city, or a code: "San Francisco, CA" is US, "Vancouver, CA" is Canada, and "Dubai" and "Remote - US" are read too. |
| One schema for five systems | Workday, Greenhouse, Lever, Ashby, and Workable jobs share one record shape and a stable jobId. |
| Alerts built in | With change tracking on, each run labels jobs new, updated, or unchanged, and reports jobs that disappeared as closed. "Changes only" mode saves just the changes. |
| Add your own boards | Paste any Greenhouse, Lever, Ashby, Workable, or Workday board URL to search it alongside the index. |
| Polite and compliant | Public job-board endpoints only, with no logins and no proxies. robots.txt is checked for every host, and requests to each host are rate-limited. Contact details in descriptions are redacted by default. |
Quick start
{"jobTitles": ["data engineer", "machine learning engineer"],"countries": ["United Arab Emirates", "Saudi Arabia"],"keywords": [],"postedWithinDays": 30,"maxBoards": 100,"maxResults": 1000,"trackChanges": true,"outputMode": "all"}
- Job titles match when the title contains the phrase ("data engineer" matches "Senior Data Engineer, Payments"). Several phrases are combined with OR.
- Countries, Locations, Keywords, and Posted within days narrow the results further.
- Only these companies / Exclude companies limit the search to, or leave out, companies in the index.
- Extra job board URLs add boards that aren't in the index.
- For alerts, save the input as a task, schedule it (for example daily), and set Output to Changes only.
Output
Each dataset item is one job:
{"jobId": "ashby:example:1f0c9a52-6d1e-4b8e-9c55-0a2b3c4d5e01","company": "Example","provider": "ashby","boardUrl": "https://jobs.ashbyhq.com/example","title": "Senior Data Engineer","location": "Dubai","locations": ["Dubai"],"country": "AE","countryName": "United Arab Emirates","countries": ["AE"],"workplaceType": "hybrid","department": "Engineering / Data Platform","employmentType": "Full-time","salary": "AED 30K - 40K","salaryRange": { "min": 30000, "max": 40000, "currency": "AED", "interval": "month" },"postedAt": "2026-10-12T09:15:00.000Z","jobUrl": "https://jobs.ashbyhq.com/example/1f0c9a52-6d1e-4b8e-9c55-0a2b3c4d5e01","applyUrl": "https://jobs.ashbyhq.com/example/1f0c9a52-6d1e-4b8e-9c55-0a2b3c4d5e01/application","description": "Build our data platform. …","scrapedAt": "2026-10-18T09:00:00.000Z","changeType": "new","changedFields": [],"firstSeenAt": "2026-10-18T09:00:00.000Z","lastSeenAt": "2026-10-18T09:00:00.000Z","closedAt": null}
RUN_SUMMARY in the default key-value store shows the index date and size, how many boards could match and how many were searched, the totals, and every board with matches, closures, or errors.
Use it from code, n8n, Make, or an AI agent
curl -X POST "https://api.apify.com/v2/acts/pharaoh_data~jobs-search-api/run-sync-get-dataset-items?token=$APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"jobTitles":["product manager"],"countries":["DE","NL"],"postedWithinDays":14,"maxResults":200}'
import osfrom apify_client import ApifyClientclient = ApifyClient(os.environ["APIFY_TOKEN"])run = client.actor("pharaoh_data/jobs-search-api").call(run_input={"jobTitles": ["data engineer"],"countries": ["AE", "SA"],"outputMode": "changes",})for job in client.dataset(run["defaultDatasetId"]).iterate_items():print(job["changeType"], job["company"], job["title"], job["jobUrl"])
- Alerts: schedule a task, then add a webhook or the Slack, email, or Google Sheets integration on "Run succeeded".
- AI agents (MCP):
https://mcp.apify.com/?actors=pharaoh_data/jobs-search-api
Limits and good to know
- It searches the companies in the index, not the whole web. The index favours technology, fintech, AI, and large employers, and includes Gulf and MENA companies where their boards are on these five systems. To search other companies, add their board URLs, or use Career Site Jobs by Company Name to find boards from company names.
- The index is refreshed periodically. A board that started hiring in a new country, or for a new kind of title, after the last refresh may be skipped for that search. The jobs themselves are always read live.
- Company names come from the boards. Two companies with the same name can both appear, for example "Circle". Use Exclude companies or Job board systems to narrow a search.
maxBoardslimits how many boards are searched, most promising first. The run log andRUN_SUMMARYsay how many more could match.- Workday returns at most 2,000 jobs per search, and descriptions need one request per job. "Changes only" mode reads descriptions only for new and updated jobs.
- Use the data in line with each employer's terms and applicable law. Descriptions are employer content; contact details in them are redacted by default.
Pricing
Pay per event: you pay per saved job record (including closed-job records), plus Apify's small Actor start event. Boards searched without matches and jobs that don't match your filters are free. If the Pricing tab lists a Job change event, records saved in "Changes only" mode are billed at that price. See the Pricing tab for current amounts.
FAQ
Why did my search return fewer jobs than a job site shows? This Actor returns only jobs posted on the employers' own boards for the companies in its index, which removes duplicates and agency reposts. Raise Maximum boards to search, remove filters, or add board URLs to widen it.
Can I search one company? Yes. Put its name in Only these companies. If it isn't in the index, paste its board URL under Extra job board URLs.
What counts as a closed job? A job this search saved in an earlier run that is no longer listed on a board that was read in full. On Workday sites it can also mean the job no longer matches your title search.