Jobs API — Indeed, LinkedIn & career sites
Pricing
from $2.10 / 1,000 jobs
Jobs API — Indeed, LinkedIn & career sites
Job listings from Indeed (60+ countries), LinkedIn and company career sites (Greenhouse, Lever, Ashby, Workable, SmartRecruiters) in one schema: salary as numbers, remote flag, full description, apply link, company website, recruiter emails. No login, no API key.
Pricing
from $2.10 / 1,000 jobs
Rating
5.0
(2)
Developer
Matvey
Maintained by CommunityActor stats
0
Bookmarked
20
Total users
12
Monthly active users
a day ago
Last modified
Categories
Share
Jobs API returns job listings from Indeed (60+ country sites), LinkedIn and company career sites (Greenhouse, Lever, Ashby, Workable, SmartRecruiters) as one clean table. Every job carries the same fields whatever the source: title, company, company website, industry and size, location split into city, region and country, remote / hybrid / on-site, employment type, salary as numbers with currency and period, posting date, the full description, the apply link, skills, and the recruiter emails and phone numbers found in the posting. No login, no API key, no browser: 100 Indeed jobs with full descriptions are one request; 1,000 jobs take a couple of minutes.

Type job titles and a location, pick the boards and filters, and click Start. Export as JSON, CSV or Excel, run it on a schedule for fresh postings, or call it from the API and AI agents.
What is Jobs API?
It is a job postings API for people who need listings as data: job boards and aggregators, recruiters and sourcing teams, lead generation (companies that are hiring for X are buying Y), salary and labour-market research, alerts for job seekers, and AI agents asked "who is hiring Python developers in Berlin this week". Indeed and LinkedIn have no public job-search API; licensed feeds cost hundreds of dollars a month. This Actor reads the same data the boards' own apps and pages use.
What makes it different from a single-board scraper:
- Three kinds of source, one schema. Compare Indeed, LinkedIn and direct career-site postings in the same columns, deduplicated per source.
- Numbers, not strings.
salaryMin,salaryMax,salaryCurrency,salaryPeriodare parsed from every source;postedAtis ISO 8601;isRemote,workplaceType,employmentTypeare normalised. - Contacts built in. Emails and phones from the posting text, the company domain from its website or apply link, and — on request — general contacts from the company website. That is what turns a job list into a lead list.
- Company data on Indeed rows: website, industry, employee count, revenue band, description and logo, straight from the posting.
What data does it return?
| Field | Example |
|---|---|
source, id, url, applyUrl | indeed · 2e6243f5ef576267 · https://www.indeed.com/viewjob?jk=… · https://careers.spglobal.com/jobs/331257 |
title, company, companyUrl, companyLogo | Software Engineering Lead · S&P Global · https://www.indeed.com/cmp/S&P-Global · … |
companyWebsite, companyDomain, companyIndustry, companySize, companyRevenue, companyDescription, companyAddress | https://www.spglobal.com/en/ · spglobal.com · Information Technology · 10,000+ · more than $10B (USD) · … · New York, NY |
location, city, region, country, countryCode, postalCode | New York, NY · New York · NY · United States · US · 10041 |
isRemote, workplaceType, employmentType, jobTypes, schedule | false · hybrid · fulltime · ["fulltime"] · Monday to Friday |
salaryMin, salaryMax, salaryCurrency, salaryPeriod, salaryText, salaryEstimated | 93000 · 150000 · USD · year · "$93,000 - $150,000 a year" · false |
postedAt, listedAt, expired | 2026-09-06T05:00:00.000Z · 2026-09-06T02:39:44.587Z · false |
description, descriptionHtml | full text and HTML |
skills, attributes | ["AI models", "Spring Boot", "Kotlin"] · every Indeed tag |
LinkedIn: seniority, jobFunction, industries, applicants, applicantsText, benefits | Mid-Senior level · Information Technology · Software Development · null · "Be among the first 25 applicants" |
Career sites: board, department, experienceLevel | stripe · Engineering · Senior |
emails, phones | ["careers@coreweave.com"] · ["+14155552671"] |
companyEmails, companyPhones, companySocials (website look-up) | ["info@acme.com"] · ["+1…"] · {linkedin, facebook, x…} |
query, queryLocation, scrapedAt | python developer · New York, NY · … |
How much does it cost?
Pricing is pay per job row; there is no browser, so platform usage is close to zero and error rows are free.
| Row | Price |
|---|---|
| Job (any source) | $0.003 — 1,000 jobs for $3 |
| Job that came with an email address | +$0.002 |
From 2 October 2026 the prices are $0.006 per job and +$0.01 for a job that came with an email address.
A week of "python developer" postings in New York on Indeed and LinkedIn is roughly 300 rows: about $0.90 today, about $1.80 from 2 October 2026 (plus the email add-on on rows that have one). Larger monthly plans get 10–30 % off.
Bulk export
This Actor is built for bulk jobs — put hundreds of inputs into one run, or call it from the API on a schedule. There is no fee per run, no fee per page and no proxy charge: you pay for the rows you keep, and error rows are free, so a 50,000-row job costs exactly 50,000 × the row price with nothing added on top.
How to get job listings
- Enter Job titles or keywords (one per line) and a Location; pick the Indeed country if it is not the US.
- Choose Sources and, if you want direct postings, add Career-site boards (
greenhouse:stripe,https://jobs.lever.co/figma). - Set the filters: posted within, remote / hybrid / on-site, job types, experience, radius, sort.
- Keep Extract emails and phones on; switch on Look up contacts on the company website for a lead list.
- Click Start; export, or read the dataset through the API.
⬇️ Input

{"keywords": ["python developer", "data engineer"],"location": "New York, NY","country": "us","sources": ["indeed", "linkedin"],"maxJobsPerQuery": 200,"datePosted": "week","remote": "any","includeContacts": true}
Remote jobs across a country, newest first
{ "keywords": ["customer success manager"], "location": "United Kingdom", "country": "uk", "remote": "remote", "sortBy": "date", "datePosted": "3days" }
Company career sites only
{ "sources": [], "boards": ["greenhouse:stripe", "ashby:openai", "https://jobs.lever.co/figma"], "boardKeywords": ["engineer", "designer"] }
A lead list of companies hiring, with contacts
{ "keywords": ["salesforce administrator"], "location": "Texas", "sources": ["indeed"], "maxJobsPerQuery": 300, "enrichCompanyContacts": true, "maxCompaniesToEnrich": 100 }
Search URLs from the browser
{ "startUrls": ["https://www.indeed.com/jobs?q=nurse&l=Chicago%2C+IL", "https://www.linkedin.com/jobs/search?keywords=nurse&location=Chicago"] }
⬆️ Output
{"type": "job","source": "indeed","id": "2e6243f5ef576267","url": "https://www.indeed.com/viewjob?jk=2e6243f5ef576267","applyUrl": "https://careers.spglobal.com/jobs/331257?lang=en-us","title": "Software Engineering Lead","company": "S&P Global","companyWebsite": "https://www.spglobal.com/en/","companyDomain": "spglobal.com","companySize": "10,000+","companyRevenue": "more than $10B (USD)","location": "New York, NY","city": "New York","region": "NY","country": "United States","countryCode": "US","isRemote": false,"workplaceType": "hybrid","employmentType": "fulltime","jobTypes": ["fulltime"],"salaryMin": 93000,"salaryMax": 150000,"salaryCurrency": "USD","salaryPeriod": "year","postedAt": "2026-09-06T05:00:00.000Z","description": "About the Role: S&P Dow Jones Indices is seeking a highly experienced…","skills": ["AI models", "Spring Boot", "Agile product development", "Kotlin"],"emails": ["eeo.compliance@spglobal.com"],"phones": [],"query": "python developer","queryLocation": "New York, NY","scrapedAt": "2026-09-06T10:38:00.000Z"}
A search or board that cannot be read arrives as a type: "error" row with the reason, never as a silently empty run.
Use cases
Job boards and aggregators
Feed a niche board (nursing jobs in Texas, remote React jobs) from three sources with one schedule; dedupe on source + id.
Recruiting and sourcing
Find who is hiring for a role, in which city, with which salary band — and the recruiter's email when it is in the posting.
Lead generation
Companies hiring "Salesforce administrator" need Salesforce consultants. Run the keyword, switch on the website look-up, and export company, companyDomain, companyEmails.
Salary and market research
salaryMin/salaryMax with period and currency across thousands of postings; skills for demand analysis; postedAt for time series.
AI agents
An agent asked "find me remote data-engineer jobs posted this week paying over $150k" gets typed rows it can filter.
Integrations and job postings API
Run it from the Apify API, the JavaScript and Python clients, a schedule, or a webhook, and push results to Google Sheets, Airtable, Slack, a CRM or a database through n8n, Make or Zapier. The Apify MCP server exposes it to Claude, ChatGPT and other agents as a tool.
🤖 For AI Agents & LLM Apps
Compact reference for agents calling this Actor through the Apify MCP server or the Apify API (lergassy/jobs-api).
Purpose: job listings from Indeed, LinkedIn and company career sites for a job title and location, with salary numbers, remote flag, description, apply link, company website and recruiter contacts.
Minimal input:
{ "keywords": ["python developer"], "location": "Berlin", "country": "de", "maxJobsPerQuery": 50 }
Output: rows with type: "job" — source, title, company, companyWebsite, companyDomain, location, city, region, countryCode, isRemote, workplaceType, employmentType, salaryMin, salaryMax, salaryCurrency, salaryPeriod, postedAt, description, url, applyUrl, skills, emails, phones; LinkedIn adds seniority, jobFunction, industries, applicants; career sites add board, department.
Behaviors an agent should know:
countryselects the Indeed site (us,uk,ca,au,de,fr,in…);locationis free text as on the board. LinkedIn ignorescountry.- If a location turns out to be in another country than
country("location": "Berlin"with the default"country": "us"), the search is repeated on the right Indeed site and the run says so in its status message. Settingcountryyourself skips the extra request. - A run that finds nothing never returns an empty dataset: it returns one
type: "error"row saying what was searched and what to change. maxJobsPerQueryis per keyword per source. Indeed returns up to 100 per request with full descriptions; LinkedIn returns 25 per page and one request per job for descriptions (includeDescription).- Salary fields are null when the posting has none;
salaryEstimated: truemeans Indeed's estimate rather than the employer's number. postedAtis the board's posting date (Indeed also giveslistedAt, when it appeared on Indeed).datePostedfilters at the source;postedAfterfilters rows.emails/phonescome from the posting text;companyEmails/companyPhonesappear only withenrichCompanyContacts. They are public business contacts found on the posting or the company site.- Career-site boards need the ATS slug (
greenhouse:stripe) or board URL; unknown slugs return anerrorrow. - A datacenter proxy is on by default and is enough; a source that rate-limits returns an
errorrow withblocked: true.
❓ FAQ
Does it need an Indeed or LinkedIn account?
No. Indeed is read through the public endpoint its mobile app uses; LinkedIn through its public guest job pages; career sites through their public board APIs.
How many jobs can I get?
Indeed: up to the number the site has for the query (thousands, 100 per request). LinkedIn: up to 1,000 per search, the same ceiling as the site. Career sites: the whole board.
Which countries?
Indeed: 60+ country sites via country. LinkedIn: worldwide by location. Career sites: wherever the company posts.
Are the emails verified?
They are extracted from public postings and websites, not guessed. Pair with the Email & Phone Verifier to check deliverability before a campaign.
Is this legal?
The Actor reads public job postings without logging in and returns factual listing data and public business contacts. Respect the boards' terms and local law for outreach; this is not legal advice.
Your feedback
Need another board (Glassdoor, ZipRecruiter, Workday) or a field? Open an issue in the Issues tab.
You might also like
- Indeed Jobs Scraper — Indeed only, 60+ countries, same columns.
- LinkedIn Jobs Scraper — LinkedIn only, no login.
- Website Contacts API — emails, phones and social links from any website.
- Email & Phone Verifier — check addresses and numbers before outreach.
- US Business Filings — company registrations by state.
Use via API
Run this Actor from your own code or pipeline. Get your token in Apify Console → Settings → API & Integrations. Every input field below has the same name as in the JSON tab of the input form.
Python
from apify_client import ApifyClientclient = ApifyClient("<YOUR_API_TOKEN>")run = client.actor("lergassy/jobs-api").call(run_input={"boards": ["greenhouse:stripe","ashby:openai"],"sources": [],"maxJobsPerQuery": 25,"includeDescription": False,"includeContacts": False})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item)
JavaScript
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: '<YOUR_API_TOKEN>' });const run = await client.actor('lergassy/jobs-api').call({"boards": ["greenhouse:stripe","ashby:openai"],"sources": [],"maxJobsPerQuery": 25,"includeDescription": false,"includeContacts": false});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
cURL (runs the Actor and returns the results in one call)
curl -X POST "https://api.apify.com/v2/acts/lergassy~jobs-api/run-sync-get-dataset-items?token=<YOUR_API_TOKEN>" \-H "Content-Type: application/json" \-d '{"boards": ["greenhouse:stripe", "ashby:openai"], "sources": [], "maxJobsPerQuery": 25, "includeDescription": false, "includeContacts": false}'