Apify Store
AS
Apify Store
/cheap_scraper/indeed-job-scraper

Indeed Jobs Scraper | Remove Duplicate Jobs

The Indeed job scraper allows you to collect jobs by entering keyword-based search queries.

liveasyncunknown~30s typical
jobsautomationdeveloper toolsindeedjob
$0.00006
per result + $0.005 call
plus $0.001 platform fee per run
Actor charges $0.00005 per result; Cracked adds 25% plus a $0.005 call fee
Bring your own Apify Store key: provider portion drops to $0.
$Set up https://cracked-ai-pearl.vercel.app/SKILL.md, then use Cracked to run apify /cheap_scraper/indeed-job-scraper for me.

Input

FieldTypeDescription
keywords*arrayOne or more keywords to search for (e.g., job title, skills). JSON field name: `keywords`
country*string (United States | Angola | Argentina | Australia | Austria | Bahrain)Select country (default is United States) Enhance accuracy by selecting the associated country. Data is drawn directly from country-specific indeed.com platforms, ensuring relevant outcomes for your location. JSON field name: `country`
location*stringLocation to search for jobs (e.g., 'San Francisco, CA', 'Montreal, QC', 'New York, NY'). JSON field name: `location`
datePostedstring ( | 1 | 3 | 7 | 14 | 30)Filter jobs by date posted. JSON field name: `datePosted`
radiusstring ( | 10 | 20 | 30 | 50 | 100)The search radius in miles. JSON field name: `radius`
jobTypestring ( | FULL_TIME | PERMANENT | PART_TIME | CONTRACT | FIXED_TERM_CONTRACT)Filter jobs by job type. JSON field name: `jobType`
jobLevelstring ( | ENTRY_LEVEL | MID_LEVEL | SENIOR_LEVEL)Filter jobs by experience level. JSON field name: `jobLevel`
remoteWorkTypestring ( | REMOTE | HYBRID)Filter jobs by remote work type. JSON field name: `remoteWorkType`
saveOnlyUniqueItemsbooleanIf enabled, only unique items will be saved. Default is false. JSON field name: `saveOnlyUniqueItems` default false
deepSearchbooleanIf enabled, the scraper will perform a deep search to find more job listings based on related keywords from your initial keyword. Ideal for searches expecting more than 400 results. Default is false. JSON field name: `deepSearch` default false
maxItemsintegerMaximum number of items to scrape. Default is none, it will scrape all the jobs it finds. JSON field name: `maxItems`
includeNoSalaryJobbooleanInclude jobs with no salary. Default is true. JSON field name `includeNoSalaryJob` default true
resumeKeywordsarray⚠️ **This is NOT a search filter** — it does not change which jobs Indeed returns to you. This is a **profile matching tool** for smarter job hunting. Paste the skills from your resume/CV here, and the scraper will automatically score every job description against your profile. Instead of reading through dozens of postings, you instantly see which jobs you're actually qualified for — and can skip the rest entirely. Each entry has a required `keyword` and an optional `aliases` array for abbreviations or alternate names (e.g. `JavaScript` → `JS`, `Kubernetes` → `K8s`). **Format:** `[{"keyword": "JavaScript", "aliases": ["JS"]}, {"keyword": "Python"}]` When provided, each job in the output will include three extra fields: - `matchedKeywords` — which of your skills were found in the job description - `unmatchedKeywords` — which of your skills were NOT found - `keywordMatchScorePercentage` — percentage of your skills found (0–100). Example: 3 out of 5 matched = **60** 🤖 **Let an AI extract skills from your resume automatically (outputs JSON ready to paste here):** - [Open ChatGPT with prompt](https://chatgpt.com/?q=Extract+skills+and+keywords+from+my+CV+for+job+matching.+Add+common+abbreviations+as+aliases.+Output+ONLY+a+raw+JSON+array+with+no+explanation+or+markdown%2C+using+this+format%3A+%5B%7B%22keyword%22%3A%22JavaScript%22%2C%22aliases%22%3A%5B%22JS%22%5D%7D%2C%7B%22keyword%22%3A%22Python%22%7D%5D.+I+will+paste+my+CV+after+this+message.) *(no login needed)* - [Open Claude with prompt](https://claude.ai/new?q=Extract+skills+and+keywords+from+my+CV+for+job+matching.+Add+common+abbreviations+as+aliases.+Output+ONLY+a+raw+JSON+array+with+no+explanation+or+markdown%2C+using+this+format%3A+%5B%7B%22keyword%22%3A%22JavaScript%22%2C%22aliases%22%3A%5B%22JS%22%5D%7D%2C%7B%22keyword%22%3A%22Python%22%7D%5D.+I+will+paste+my+CV+after+this+message.) *(login required)*

Call it

curl
curl https://cracked-ai-pearl.vercel.app/v1/run \
  -H "Authorization: Bearer ck_live_..." -H "content-type: application/json" \
  -d '{"provider":"apify","endpoint":"/cheap_scraper/indeed-job-scraper","input":{"keywords":["software engineer"],"country":"United States","location":"San Francisco, CA","datePosted":"3","radius":"","jobType":"","jobLevel":"","remoteWorkType":"","resumeKeywords":[{"keyword":"JavaScript","aliases":["JS"]},{"keyword":"TypeScript","aliases":["TS"]}],"maxItems":3},"wait":false}'
poll
curl "https://cracked-ai-pearl.vercel.app/v1/runs/<runId>?wait=30" -H "Authorization: Bearer ck_live_..."
cli
npx cracked-ai run -p apify -e /cheap_scraper/indeed-job-scraper -i '{"keywords":["software engineer"],"country":"United States","location":"San Francisco, CA","datePosted":"3","radius":"","jobType":"","jobLevel":"","remoteWorkType":"","resumeKeywords":[{"keyword":"JavaScript","aliases":["JS"]},{"keyword":"TypeScript","aliases":["TS"]}],"maxItems":3}' -w 120
mcp
run_tool({ provider: "apify", endpoint: "/cheap_scraper/indeed-job-scraper", input: {"keywords":["software engineer"],"country":"United States","location":"San Francisco, CA","datePosted":"3","radius":"","jobType":"","jobLevel":"","remoteWorkType":"","resumeKeywords":[{"keyword":"JavaScript","aliases":["JS"]},{"keyword":"TypeScript","aliases":["TS"]}],"maxItems":3}, wait: false })

Try it

Runs against your signed-in workspace balance. Sign in if you have not.