Indeed Job Details Scraper - Title, Company, Salary by URL avatar

Indeed Job Details Scraper - Title, Company, Salary by URL

Pricing

from $8.00 / 1,000 extracted pages

Go to Apify Store
Indeed Job Details Scraper - Title, Company, Salary by URL

Indeed Job Details Scraper - Title, Company, Salary by URL

Paste public Indeed job URLs you already have and get one JSON row per job: title, employer, location, job type, salary text, description and the job URL. Pay the posting does not show stays null. Not a job search. Failed or blocked pages are free.

Pricing

from $8.00 / 1,000 extracted pages

Rating

0.0

(0)

Developer

Yukai Lin

Yukai Lin

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

1

Monthly active users

2 days ago

Last modified

Security

Limited permissions

Share

Indeed Job Details Scraper — Title, Company, Salary by URL

Paste public Indeed job detail URLs you already have (the viewjob?jk=… links, on any Indeed country site) and get one JSON row per job with fixed fields: job title, employer, location, job type, salary text, description and the job URL. Same columns on every row, nothing to configure.

This is not an Indeed job search and does not crawl Indeed: it reads only the URLs you give it. To collect job links, use your own list, an export, or another tool, then paste or pass them here.

Input example

{
"urls": [
"https://www.indeed.com/viewjob?jk=4f33002e695fbda3",
"https://ph.indeed.com/viewjob?jk=326367db14f11b31"
]
}

The Job posting preset is already selected and Extra fields is empty; just paste URLs, one per line. The prefilled URL is a public example that was readable when checked; job postings expire, so replace it with yours. You can also pass startUrls or a datasetId with the URLs from another Actor's run.

Output fields

Each successful job page is one Dataset row; the job is in its data object:

FieldTypeMeaning
titlestringJob title as printed
employerstringHiring company named in the posting
locationstringWorkplace as printed (city, region or Remote)
employmentTypestringJob type as printed, e.g. Full-time, Part-time, Contract
salaryTextstringPay exactly as printed for this job, e.g. "₱25,000 - ₱30,000 a month"; null when the posting shows no pay
descriptionstringJob description text (duties, requirements, benefits)
jobUrlstringThe job URL that was read

Only the main job on the page is read. Similar jobs, related jobs, "People also viewed" cards and other companies' salaries are ignored: title, employer, location, employmentType and salaryText must be printed in the posting itself, otherwise they are null. Most words of description must come from the posting itself too; a description taken from another job card is null. Pay is never estimated from the title, location or other jobs. The row also has url, title (page title), success, charged, completeness, missingFields and fieldEvidence (where each value was found). Turn on Flat columns for one column per field (Google Sheets, n8n, CSV).

Illustrative row (shape only, not a real posting):

{
"url": "https://ph.indeed.com/viewjob?jk=0123456789abcdef",
"data": {
"title": "Customer Service Representative",
"employer": "Example Outsourcing Inc.",
"location": "Makati, Metro Manila",
"employmentType": "Full-time",
"salaryText": null,
"description": "Answer customer calls and emails, log cases and follow up until resolved. Requirements: ...",
"jobUrl": "https://ph.indeed.com/viewjob?jk=0123456789abcdef"
},
"success": true,
"charged": true
}

Pricing

EventPrice (Free plan)When
page-extracted$0.01 per job pageOne successful job page (all fields of that page, one event)

Free, never charged: pages that cannot be read (blocked by Indeed, bot check, 404, login, or disallowed by robots.txt when Skip pages robots.txt disallows is on), pages with no job title for their job (not a job detail page, errorType: no_data), timeouts, invalid URLs (a free row with success: false, charged: false, errorType and error), and repeated URLs (read once, counted in SUMMARY.duplicatesSkipped). Two readable job URLs = two events. Higher Apify plans get the engine's usual tier discounts. No new event or price is introduced: this is the AI Web Data Extractor engine with its job_detail preset.

Limitations

Indeed's robots.txt does not allow general automated readers on its job pages (Disallow: /viewjob for User-agent: *, checked 2026-10-30). By default this Actor still reads the job URLs you give it, one page per URL, as when you open them yourself; it never logs in and never solves CAPTCHAs. You are responsible for using it in line with Indeed's terms; turn on Skip pages robots.txt disallows to follow robots.txt instead (each Indeed job page then returns a free robots_disallowed row). Pages that Indeed blocks or answers with a verification check, and pages that take too long, return a free blocked, timeout or error row. The number of successful rows can therefore be lower than the number of URLs, down to none. Use only public job pages you may access; pages behind a login are not read. Indeed search result pages are not supported (paste the job links instead). A very long description may be shortened; check important values against the source.

FAQ

Does it search Indeed for me? No. It reads job URLs you already have. It does not run keyword searches or crawl result pages.

Why is salaryText null? The posting does not print pay for that job. Salaries shown only in similar or related job cards belong to other jobs and are not used.

Can I add fields? Yes: put them in Extra fields, e.g. {"benefits": "array"}. A full jsonSchema replaces the job fields entirely.

Is the same URL charged twice? No. Repeated URLs in one run are read once.