--- title: Indeed description: Scrape public Indeed job postings by search, company, or URL --- The Indeed scraper pulls structured public job postings from Indeed. Give it search terms and/or URLs (a search page, a company jobs page, or a single job), and it returns jobs with title, company, location, salary, job types, benefits, remote/hybrid flag, posting age, and description. ## Endpoint ```bash POST /api/v1/workspaces/{workspace_id}/scrapers/indeed/scrape ``` ## Inputs At least one of `urls` or `search_queries` is required. | Field | Default | Description | |-------|---------|-------------| | `urls` | — | Indeed URLs: a search page (`/jobs?q=&l=`), a company jobs page (`/cmp//jobs`), or a single job (`/viewjob?jk=`) (max 20 sources per call, combined with queries) | | `search_queries` | — | Job search terms, e.g. `["data analyst"]` | | `country` | `us` | Country code selecting the Indeed domain, e.g. `us`, `gb`, `de` | | `location` | — | Where to search, e.g. `Remote`, `New York, NY` | | `radius` | — | Search radius in miles/km around `location` | | `job_type` | — | `fulltime`, `parttime`, `contract`, `internship`, `temporary`, `permanent`, `seasonal`, or `freelance` | | `level` | — | `entry_level`, `mid_level`, or `senior_level` | | `remote` | — | `remote` or `hybrid` | | `from_days` | — | Only return jobs posted within the last N days | | `sort` | `relevance` | `relevance` or `date` | | `scrape_job_details` | `false` | Fetch each job's detail page for the full description (slower: one extra page load per job) | | `max_items` | `25` | Max total jobs returned across all sources (hard cap 100) | | `max_items_per_query` | `25` | Max jobs per search/company target | ## Example ```bash curl -X POST "$BASE_URL/api/v1/workspaces/1/scrapers/indeed/scrape" \ -H "Authorization: Bearer $SURFSENSE_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "search_queries": ["data analyst"], "location": "Remote", "remote": "remote", "sort": "date", "max_items": 30 }' ``` The response is `{ "items": [...] }` — one item per job posting. Billing is per returned job. For the full input and output JSON schemas and generated code snippets in your language, open **API Playground → Indeed → Scrape** in your workspace.