mode=auto), Extract (extract=auto), Crawl, Batch, css_extractor
Ask your AI agent
With the Zenrows MCP server connected to Claude, Cursor or any MCP client, paste this prompt. Your agent picks the right Zenrows tools and settings on its own.Search Indeed for jobs
Send an Indeed search URL withextract=auto. parsed.job_listings holds one entry per job card, with its title, company, location, pay and job key. extract_fields keeps only the fields you read.
Example output
benefits, as Indeed shows them on the card. Omit extract_fields to also get each cardβs snippet, detail_url and company_logo_url, plus search_context with the query and location.
List every opening on a company careers page
Many companies publish openings on a hosted job board. Point Crawl at the board and keep only job URLs withinclude_patterns. This example collects GitLabβs openings from its Greenhouse board:
Python (Requests)
depth: 1 reads the links on the board itself. The crawl fetched one page, so it cost one Fetch request. The same pattern works on any careers page: set include_patterns to the path its job links share.
Get every jobβs details with Batch
Send the job URLs to one Batch job and pick the fields withcss_extractor. On Greenhouse boards, the title is the h1 and the location is .job__location:
Python (Requests)
.job__description to the selectors for the full posting text, or set response_type: "markdown" instead of css_extractor to feed each posting to an LLM.
Customize it
Troubleshooting
job_listingsis shorter than the page you see: Indeed shows a page of cards per request. Request the next pages withstart=10,start=20.REQS004with an βAvailable fieldsβ list: the field names differ on this kind of page. Pick names from the list in the error, or omitextract_fields. See REQS004.- The crawl returns no job URLs: the pattern doesnβt match the boardβs links. Open the board, copy one job link, and use the path segment it shares with the others.
- A Batch task comes back empty: that page uses different markup. Open it, adjust the selector, and rerun the failed tasks, see Retry failed requests.
Related recipes
Crawl a website from a start URL
Discover every page behind one start URL.
Scrape a list of URLs
Batch jobs from the API, SDKs and CLI.
Get structured JSON from any page
How extract=auto and prepared domains work.
Detect changes on any page and get alerted
Get alerted when new postings appear.