This tutorial shows how to scrape Indeed jobs into CSV with the Indeed Job Scraper template for UScraper. You will import the workflow, edit the keyword and location, choose an export path, validate the rows, and decide when an official API or licensed provider is a better fit.
Before you start
Prerequisites and policy checks
You need UScraper installed as a local desktop app, the current Indeed Job Scraper workflow, and a folder where CSV exports can be saved. Run the default search once before changing anything. That baseline tells you whether the page is accessible, whether Indeed is returning normal job cards, and whether the export columns still match the rendered layout.
Also decide why you are collecting the data. Hiring teams usually need a small market snapshot: job titles, salaries, locations, hiring companies, and application links for a specific role. Researchers may compare "part time jobs", "weekend jobs", "seasonal jobs", or local searches such as "Indeed jobs Atlanta" and "Indeed jobs Austin". Those searches have high demand, but volume does not remove compliance work.
Review the current Indeed Partner Docs, Indeed legal terms, and robots.txt before running automation. Browser visibility is not the same as permission to automate, store, resell, or republish data.
Treat this as a controlled research workflow. If Indeed shows verification, CAPTCHA, access-denied, or login-only screens, pause the run instead of trying to bypass the control.
Workflow anatomy
What the Indeed job scraper template does
The JSON workflow is the source of truth. It starts at an Indeed search URL, waits for the page to load, injects JavaScript that turns visible job cards into structured .uscraper-job-row elements, exports those elements to CSV, checks whether the Next Page link exists, and loops until pagination ends.
The default search is web developer jobs on Indeed. To change the target, edit the q parameter for the keyword and the l parameter for location. For example, a recruiter could test part time jobs in Dallas, weekend jobs in NYC, seasonal retail roles, or remote UI developer listings. Validate one small search first, then repeat with additional keyword and location pairs.
| Workflow part | What it does | What to verify |
|---|---|---|
| Navigate and waits | Opens the configured Indeed search URL and lets the page finish loading | The browser reaches a job results page, not a block, login, or verification page. |
| Inject JavaScript | Reads visible cards and creates normalized export rows | At least one .uscraper-job-row exists before export. |
| Structured Export | Writes selected data attributes into CSV columns | Headers, append mode, file name, and save folder are correct. |
| Pagination loop | Looks for the Next Page control, clicks it, waits, then extracts again | New rows appear after each page and duplicates are reviewed later. |
| End block | Stops when no enabled next-page link exists | The run finishes cleanly without repeated empty pages. |
Runbook
How to scrape Indeed job listings to CSV
Import the template
Open Indeed Job Scraper from the Templates library, download the workflow JSON, and import it into UScraper.
Run the default search
Keep the default web developer query for the first pass. This proves the workflow, export path, and current Indeed layout before you add your own search terms.
Edit keyword and location
In the Navigate block, update the search URL query parameters. Change q for the role and l for the location, then save the workflow.
Set the export folder
In Structured Export, choose your project folder and keep indeed-job-scraper-by-keywords.csv as the output file unless your team has a naming convention.
Validate and dedupe
Open the CSV, compare five rows with the browser, remove fallback or duplicate rows, then repeat the run for the next keyword or city.
Do not scale the run until the first CSV matches what you see on the page. Indeed can show different cards by region, query, personalization state, and access conditions, so validation is part of the workflow rather than a final clean-up task.
Output
CSV export shape from the JSON workflow
There is no bundled CSV sample, so use the workflow definition and your first dry run together. The export block includes headers and appends rows. If you repeat a search, archive the old CSV or dedupe by Job_ID and Job_URL.
indeed-job-scraper-by-keywords.csvColumn
Site
Source site context.
Column
Search_Term
Keyword from the query.
Column
Search_Location
Location from the query.
Column
URL_Input
Original search URL.
Column
Total_Result
Visible result count or diagnostic marker.
Column
Job_Title
Listing title.
Column
Job_ID
Indeed job key when present.
Column
Job_URL
Canonical job detail URL.
Column
Job_Type
Full-time, part-time, contract, or similar text.
Column
Salary
Visible salary range.
Column
Location
Job location text.
Column
Full_Description
Snippet or detail text captured from the card.
Column
Company_Name
Employer name.
Column
Company_URL
Company profile URL when visible.
Column
Company_Rating
Visible employer rating.
Column
Company_Review_Count
Visible review count.
Column
Posted_Date
Posting age or date text.
Column
isExpired
True or False marker.
Column
Valid_Through
Expiry date when available.
Column
Apply_Link
Apply or detail link.
Sample rows
1 of many
| Site | Search_Term | Search_Location | URL_Input | Total_Result | Job_Title | Job_ID | Job_URL | Job_Type | Salary | Location | Full_Description | Company_Name | Company_URL | Company_Rating | Company_Review_Count | Posted_Date | isExpired | Valid_Through | Apply_Link |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| web developer | Oakland, CA | Indeed search URL | FALLBACK_SAMPLE_BLOCKED | Web Developer - AI Trainer | 282cd08f13ff1c00 | viewjob link | Contract | From $40 an hour | Oakland, CA | Diagnostic fallback text | DataAnnotation | Company profile link | 3.8 | 627 | 2025-05-06 | False | 2025-10-03 | viewjob link |
The sample row above is intentionally labeled as a fallback because the provided JSON includes blocked-environment examples. Live runs should be checked against the browser before those rows are used for recruiting analysis, salary research, or lead lists.
{
"project": {
"name": "Indeed Job Scraper",
"description": "Best-effort Indeed keyword job scraper"
},
"blocks": [
{
"title": "Navigate",
"config": {
"url": "https://www.indeed.com/jobs?q=web%20developer&l="
}
},
{
"title": "Structured Export",
"config": {
"rowSelector": ".uscraper-job-row",
"fileName": "indeed-job-scraper-by-keywords.csv",
"includeHeaders": true,
"fileMode": "append",
"columns": [
{ "name": "Job_Title", "attribute": "data-job-title" },
{ "name": "Company_Name", "attribute": "data-company-name" },
{ "name": "Salary", "attribute": "data-salary" },
{ "name": "Apply_Link", "attribute": "data-apply-link" }
]
}
}
]
}
Decision points
Indeed jobs API vs scraping
Start with official channels when you need a durable integration. The Indeed Partner Docs cover partner API and job integration paths for products that manage postings, candidates, employers, or publisher experiences. That route is better for production systems, contractual use, and redistribution rights.
Use a supervised scraper when you need a short research pass, an exportable CSV for market review, or a no-code workflow your analyst can inspect. A local desktop app is also useful when you want to see the same browser state the export came from and keep files in your own project folder.
| Option | Best for | Trade-off |
|---|---|---|
| UScraper template | Small to medium analyst-led exports, CSV review, local custody | Requires page access, validation, and selector maintenance. |
| Indeed partner APIs | Approved integrations, job posting flows, publisher products | Requires eligibility, setup, and policy compliance. |
| Cloud scraper tools such as Apify, Octoparse, Browse AI, or Bright Data | Scheduled jobs, hosted infrastructure, proxy management, larger operations | Usually metered, cloud-hosted, and still dependent on terms and access rules. |
| Open-source libraries such as JobSpy | Developer workflows and custom pipelines | Requires coding, maintenance, and stronger operational guardrails. |
No option removes the need to follow source terms, privacy rules, and internal data-handling policy. The right tool depends on whether you are doing one research export, recurring recruiting intelligence, or a production data product.
Troubleshooting
Common issues and fixes
Stop the run and mark the output as blocked. The workflow may export fallback sample rows so the schema is visible, but those rows are not fresh data. Do not add scripts intended to defeat verification.
FAQ
It depends on your jurisdiction, use case, source access, and the current Indeed policies. Review official terms and robots rules, avoid private or login-only data, respect rate limits, and get legal advice before commercial use.

