Indeed Job Scraper
Pricing
from $5.20 / 1,000 result scrapeds
Indeed Job Scraper
Scrape Indeed jobs with title, company, location, salary, type, description, posting date. Filter by date, type, experience, remote. Anti-detection with fingerprint rotation and residential proxy. Click-based pagination.
Pricing
from $5.20 / 1,000 result scrapeds
Rating
0.0
(0)
Developer
junipr
Actor stats
0
Bookmarked
2
Total users
1
Monthly active users
9 hours ago
Last modified
Categories
Share
Scrape job listings from Indeed.com by keyword and location. Extract job titles, company names, salaries, job types, descriptions, remote status, company ratings, and benefits — all in structured JSON ready for analysis, recruiting pipelines, or market research.
Features
- Search by any keyword or job title and any US location or ZIP code
- Filter by date posted, job type (full-time, part-time, contract, etc.), experience level, and remote/hybrid availability
- Extract comprehensive job data: title, company, location, salary, description snippet, job type, and benefits
- Remote job detection — isRemote flag set when job is listed as remote or hybrid
- Company star ratings from Indeed shown alongside each listing
- Automatic pagination — scrapes multiple pages to collect hundreds of results
- Push-as-you-go — results saved immediately, no accumulation in memory
- Anti-blocking via Apify proxy integration with automatic fallback to direct connection
- Zero-config — works out of the box with sensible defaults (software engineer in New York)
Input
All fields are optional. The actor runs with defaults and requires no configuration.
| Field | Type | Default | Description |
|---|---|---|---|
searchQuery | string | "software engineer" | Job title, keyword, or company name |
location | string | "New York, NY" | City and state, or ZIP code |
maxResults | integer | 50 | Maximum number of listings to extract (up to 1,000) |
maxPages | integer | 5 | Maximum search result pages to crawl |
datePosted | string | "all" | Filter by recency: all, 1, 3, 7, or 14 days |
jobType | string | "all" | fulltime, parttime, contract, temporary, internship |
experienceLevel | string | "all" | entry_level, mid_level, or senior_level |
remoteFilter | string | "all" | all, remote, or hybrid |
maxConcurrency | integer | 3 | Simultaneous requests (1–10) |
requestTimeout | integer | 30000 | Page load timeout in milliseconds |
Output
Each result is one job listing stored in the default dataset.
| Field | Type | Description |
|---|---|---|
title | string | Job position title |
company | string | Hiring company name |
location | string | Job location or "Remote" |
salary | string | null | Salary or pay range as shown on Indeed |
jobType | string | null | Employment type (Full-time, Contract, etc.) |
description | string | null | Short description snippet from search results |
detailUrl | string | Full Indeed job listing URL |
datePosted | string | null | When the job was posted (e.g. "2 days ago") |
isRemote | boolean | True if job is listed as remote |
rating | number | null | Company star rating on Indeed (1–5) |
benefits | string[] | Benefits mentioned in the listing |
extractedAt | string | ISO 8601 timestamp of extraction |
Output Example
{"title": "Senior Software Engineer","company": "Acme Corp","location": "New York, NY","salary": "$120,000 - $160,000 a year","jobType": "Full-time","description": "We are looking for a Senior Software Engineer to join our growing team. You will design and build scalable backend services...","detailUrl": "https://www.indeed.com/viewjob?jk=abc123def456","datePosted": "Posted 2 days ago","isRemote": false,"rating": 4.2,"benefits": ["Health insurance", "401(k)", "Paid time off", "Remote work options"],"extractedAt": "2025-06-01T14:30:00.000Z"}
Use Cases
- Recruiting and talent acquisition — build a pipeline of open positions at target companies
- Job market research — analyze salary trends, in-demand skills, and hiring patterns by location or industry
- Competitive intelligence — monitor which companies are hiring and at what scale
- Career planning — research required experience levels and compensation ranges for target roles
- Lead generation — identify companies actively hiring in your space as potential clients or partners
- Academic research — collect job posting data for labor market studies and economic analysis
Pricing
This actor uses Pay-Per-Event (PPE) pricing: $5.20 per 1,000 results scraped ($0.0052 per event). You are charged once per item successfully extracted.
Pricing includes all platform compute costs — no hidden fees.
Limitations
- Supports Indeed.com (US) only
- Indeed may dynamically change page structure — if selectors stop working, the actor falls back gracefully and logs a warning
- Some listings may not include salary, job type, or benefits if the employer did not provide them
- Indeed's search pagination typically supports up to ~100 pages (approximately 1,500 listings) for any given query
Proxy Requirements
This actor requires residential proxies because Indeed has aggressive anti-bot protection that blocks datacenter IP addresses.
- Paid Apify plan users: Works automatically with the default residential proxy configuration. No changes needed.
- Free plan users: Provide your own residential proxy URL in the Proxy Configuration input field. Free Apify plans only include datacenter proxies, which Indeed blocks.
- Without a residential proxy, the actor will exit with a clear error message explaining how to fix the issue.
Related Actors
- Yellow Pages Scraper — Scrape business listings from YellowPages.com
- Reddit Scraper — Scrape posts and comments from Reddit
- Hacker News Scraper — Scrape stories and comments from Hacker News
FAQ
How many results can I scrape?
Up to 1,000 results per run with the maxResults parameter. Indeed shows roughly 15 listings per search page and supports deep pagination, so large extractions are possible. For best results, use specific job titles and locations to narrow the search.
Does it extract the full job description?
The actor extracts the description snippet shown on the search results page, not the full job description from the detail page. The detailUrl field gives you the direct link to visit the full posting. Full detail page scraping may be added in a future version.
Can I filter for remote jobs only?
Yes — set remoteFilter to "remote" to return only remote positions, or "hybrid" for hybrid listings. The isRemote field is also set to true for any listing where the location text indicates remote work.
Why is the salary field null for some jobs?
Indeed only shows salary information when the employer explicitly includes it in the posting. Many job listings do not include salary data. When salary is unavailable, the field is null.
Does it work without a residential proxy?
No. Indeed blocks datacenter IPs and direct connections aggressively. A residential proxy is required for reliable scraping. The actor defaults to Apify's residential proxy (available on paid plans). Free-plan users can provide their own residential proxy URL in the Proxy Configuration input. Without a residential proxy, the actor will exit with an actionable error message.
How do I search for jobs at a specific company?
Set searchQuery to the company name (e.g. "Google" or "Apple engineer"). You can also combine a job title with a company name, such as "data analyst Amazon".
What does the experience level filter do?
Setting experienceLevel to entry_level, mid_level, or senior_level adds Indeed's built-in experience filter to the search URL, which filters results server-side before scraping. Not all listings have experience level tags, so some results in a filtered search may appear to span levels.