Indeed Job Scraper
Pricing
Pay per usage
Indeed Job Scraper
Extract job listings from Indeed with job titles, company names, salaries, locations, descriptions, employment types, posting dates, and application URLs. Ideal for job market research, recruitment analytics, salary benchmarking, hiring trends, lead generation, and workforce insights.
Pricing
Pay per usage
Rating
0.0
(0)
Developer
Shahid Irfan
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
What does Indeed Jobs Scraper do?
Indeed Jobs Scraper collects job postings from Indeed.com into a clean, structured dataset. Enter a keyword and location, or paste an Indeed search URL, and the Actor returns job titles, companies, locations, salaries, employment types, remote flags, apply links, company profile details, and full job descriptions. It is built for job-market research, recruiting automation, lead generation, and data pipelines that need reliable Indeed job data without manual copy-paste.
Why use Indeed Jobs Scraper?
- Complete, structured records - Each job includes the title, company, location, salary, employment type, remote status, posting date, apply link, and the full description in both HTML and plain text.
- Flexible search - Run a keyword and location search, paste multiple Indeed search URLs, or submit individual job URLs in a single run.
- Automation-ready output - Export results to JSON, CSV, Excel, or XML, or send them to Google Sheets, Slack, or a webhook.
- Built to keep running - The Actor retries temporary failures, adapts when Indeed changes its responses, and falls back to an alternate listing source automatically.
- No account, login, or cookies required - Start collecting job data immediately.
- Runs on a schedule - Monitor new postings hourly, daily, or weekly to track hiring trends and fresh openings.
What data can you extract from Indeed?
| Field | Description |
|---|---|
title | Job title |
company | Hiring company name |
location | Job location (city, state) |
salary | Salary or pay range when disclosed |
job_type | Employment type(s) such as Full-time, Part-time, Contract |
is_remote | Whether the job is remote (hybrid excluded) |
postedAt | Relative posting time, for example "3 days ago" |
postedDate | ISO posting date |
url | Direct Indeed job URL |
apply_url | External apply link when available |
company_url | Company profile URL on Indeed |
company_industry | Company industry when available |
company_num_employees | Company size when available |
company_revenue | Company revenue range when available |
company_website | Company website when available |
description_html | Full job description in HTML |
description_text | Full job description in plain text |
search_url | The search page where the job was found |
source | Source platform, always "indeed" |
scrapedAt | ISO timestamp for when the job was collected |
How to use Indeed Jobs Scraper
- Open the Actor on Apify Store.
- Enter a keyword such as "software engineer" and, optionally, a location such as "Remote" or "New York".
- Optionally set a posted-date filter, a result limit, and a page limit.
- Run the Actor.
- Download the dataset or connect it to your workflow.
You can also paste one or more Indeed search or job URLs into startUrls. When URLs are supplied, they take priority over the keyword and location inputs.
Input Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
keyword | String | No | software engineer | Job search term, for example "data analyst" or "product manager" |
location | String | No | - | Location filter, for example "New York" or "Remote". Empty means nationwide |
startUrls | Array | No | - | Indeed search or job URLs. Takes priority over keyword and location |
posted_date | String | No | - | Date filter: 24h, 7d, 30d, or anytime |
results_wanted | Integer | No | 20 | Maximum number of jobs to save |
maxPages | Integer | No | - | Stop after this many pages (about 100 jobs per page). Empty for automatic |
collectDetails | Boolean | No | true | Include full job descriptions in each record |
proxyConfiguration | Object | No | Apify Residential | Residential proxy is on by default because Indeed blocks datacenter IP ranges. Disable it for local or unblocked networks |
Output Data
| Field | Type | Description |
|---|---|---|
title | String | Job title |
company | String | Hiring company name |
location | String | Job location |
salary | String | Salary or pay range when disclosed |
job_type | Array | Employment type(s) |
is_remote | Boolean | True when the job is remote |
postedAt | String | Relative posting time |
postedDate | String | ISO posting date |
url | String | Indeed job URL |
apply_url | String | External apply link when available |
company_url | String | Company profile URL |
company_industry | String | Company industry when available |
company_num_employees | String | Company size when available |
company_revenue | String | Company revenue range when available |
company_website | String | Company website when available |
description_html | String | Full job description in HTML |
description_text | String | Full job description in plain text |
search_url | String | Search page URL where the job was found |
source | String | Source platform, always "indeed" |
scrapedAt | String | ISO timestamp for when the job was collected |
Usage Examples
Keyword and location search
Collect up to 100 software engineering jobs in a location, posted in the last week.
{"keyword": "software engineer","location": "Remote","posted_date": "7d","results_wanted": 100,"collectDetails": true}
Multiple search URLs
Collect jobs from more than one Indeed search page in a single run.
{"startUrls": ["https://www.indeed.com/jobs?q=software+engineer&l=Remote","https://www.indeed.com/jobs?q=data+scientist&l=New+York"],"results_wanted": 200}
Fresh postings only
Track only jobs posted in the last 24 hours and cap the run to five pages.
{"keyword": "registered nurse","location": "Texas","posted_date": "24h","maxPages": 5,"results_wanted": 500}
Single job lookup
Fetch full details for one Indeed job URL.
{"startUrls": ["https://www.indeed.com/viewjob?jk=30dd3ce95631da0a"],"results_wanted": 1}
Sample Output
{"title": "Senior Software Engineer","company": "Tech Corp","location": "Austin, TX","salary": "$140,000 - $180,000 a year","job_type": ["Full-time"],"is_remote": true,"postedAt": "3 days ago","postedDate": "2026-10-12T18:30:00.000Z","url": "https://www.indeed.com/viewjob?jk=abc123","apply_url": "https://techcorp.com/careers/123","company_url": "https://www.indeed.com/cmp/Tech-Corp","company_num_employees": "1,001 to 5,000","company_website": "https://techcorp.com","description_html": "<p>We are looking for a senior engineer to join our platform team.</p>","description_text": "We are looking for a senior engineer to join our platform team.","search_url": "https://www.indeed.com/jobs?q=software+engineer&l=Remote","source": "indeed","scrapedAt": "2026-10-15T12:00:00.000Z"}
Tips for Best Results
- Start with a small
results_wantedsuch as 20 to validate your keyword and location before running large jobs. - Use
posted_dateto focus on fresh listings for monitoring workflows. - Use
startUrlswhen you want exact control over the search, for example to apply a specific location or category filter on Indeed. - Set
maxPagesto cap long runs and control cost. - Set
collectDetailstofalsefor faster, lighter runs when you only need job summaries and links. - Schedule the Actor to collect new postings on a recurring basis.
- If a specific field is empty for a job, the employer likely did not publish that detail on Indeed.
Integrations
- Google Sheets - Send job data to a spreadsheet for analysis.
- Webhooks - Notify your systems when a run finishes.
- Make or Zapier - Connect results to no-code automations.
- Slack - Post new job batches to a channel.
- API - Access datasets programmatically from your own applications.
- Exports - Download results as JSON, CSV, Excel, or XML.
Frequently Asked Questions
Can I export Indeed job data to CSV or Excel?
Yes. Apify datasets can be downloaded as CSV, Excel, JSON, XML, and other formats directly from the run page or the API.
Do I need an Indeed account or cookies?
No. The Actor collects public job data without an Indeed login, cookies, or account.
Can I run this Actor on a schedule?
Yes. You can schedule the Actor in Apify Console to run hourly, daily, weekly, or at another interval, which is useful for monitoring new job postings.
How many jobs can I collect in one run?
You control the limit with results_wanted, up to the Actor's configured maximum. Use maxPages as an additional cap for very large runs.
Why are some fields empty for a job?
Some employers do not publish a salary, company size, revenue, or website. When the source listing omits a detail, the corresponding field is empty.
Is a proxy required?
On Apify, yes. Indeed blocks datacenter IP ranges, so the Actor enables the Apify Residential proxy by default to collect data reliably. If you run it locally or from an unblocked network, you can turn the proxy off. If an unproxied run on Apify returns no jobs, the Actor automatically retries once through Apify Residential proxy.
Is it legal to scrape Indeed?
Scraping public web data can be legal, but you are responsible for complying with applicable laws, Indeed's terms, and privacy rules. Use the data responsibly.
Support
For issues, feature requests, or custom Actor work, use the Issues tab on the Actor page or contact the developer through Apify.
Legal Notice
This Actor is designed for legitimate collection of publicly available job data from Indeed. Users are responsible for using the data responsibly and complying with applicable laws and website terms.