Indeed Jobs Scraper (Cheap) avatar

Indeed Jobs Scraper (Cheap)

Pricing

from $2.99 / 1,000 results

Go to Apify Store
Indeed Jobs Scraper (Cheap)

Indeed Jobs Scraper (Cheap)

Pulls job listings from Indeed by keyword, location, or company name. Run multiple searches at once and get titles, salaries, apply links, and posting dates back as structured data.

Pricing

from $2.99 / 1,000 results

Rating

0.0

(0)

Developer

Data API

Data API

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

6 days ago

Last modified

Share

Indeed Job Listings Scraper

Indeed Job Listings Scraper

Searching Indeed by hand gets old fast. You click through page after page, copy out a title here and a pay range there, then start over for the next city. This scraper handles that part. Give it a keyword and a place, and it returns the role title, employer, pay range, location, how recently the job went up, and a direct apply link as structured data. Pass it a few keywords and a few cities at once and every combination lands in one dataset, ready to export.

What you get

Every job card on the results page becomes one row with the same shape, so your columns stay predictable when you load them into a sheet or database. Anything the listing did not show comes back as null rather than dropping out. Each row carries:

  • The roleroleTitle, summaryText, employmentType, remoteFriendly, payRange
  • The employeremployerName, employerRating
  • Where and whenworkLocation, listedDate
  • How to applyapplyUrl, quickApply
  • TrackingpostingId, collectedAt

Quick start

  1. Open the input form and type a role into Keyword (or paste several into Keywords).
  2. Set a Place, or leave it empty to search everywhere. Add more under Places if you want several cities at once.
  3. Optionally narrow things with Posted within, Employment type, or Remote only, or point Employer at one company.
  4. Press Start, then export the dataset as JSON, CSV, Excel, or XML once the run finishes.

How it works

Use cases

  • Recruiters checking what a rival is hiring for this week without paging through the site by hand.
  • Job-market analysts watching how demand for a skill shifts from one city to the next.
  • Compensation teams building a pay benchmark from the ranges employers actually posted.
  • Developers wiring a feed of fresh listings into alerts or a job board.
  • Career coaches pulling current openings for a client across a few target markets in one pass.

Input

FieldTypeRequiredDescription
keywordstringOne of keyword or employerA single role or search term, e.g. backend developer. Merged with keywords when both are set.
keywordsarray of stringsOptionalA batch of search terms, one per line; each runs as its own search.
employerstringOne of keyword or employerLimit results to a company's Indeed page. Switches to the /cmp/{company}/jobs route and skips the open search.
placestringNoA city, state, country, or Remote. Leave empty to cover everywhere.
placesarray of stringsNoSeveral areas to cover in one run, one per line. Merged with place when both are set.
postedWithinstringNoRecency window: any, last24h, last3days, last7days, or last14days. Default any.
employmentTypestringNoContract filter: any, fulltime, parttime, contract, temporary, or internship. Default any.
remoteOnlybooleanNoKeep only remote or work-from-home roles. Default false.
timeoutSecondsintegerNoSeconds to wait on each request before giving up. Default 120; raise it if later pages return 502s.

Example input

{
"keyword": "backend developer",
"place": "Austin",
"postedWithin": "last7days",
"employmentType": "fulltime",
"remoteOnly": false,
"timeoutSeconds": 120
}

Run several searches across several cities in one go:

{
"keywords": ["backend developer", "ux designer", "marketing manager"],
"places": ["Austin", "Remote", "Canada"],
"postedWithin": "last3days"
}

Pull everything from a single company:

{
"employer": "Microsoft",
"place": "Austin"
}

Output

Each job card on the results page becomes one row, and every field is always present — values the listing did not carry come back as null so the dataset stays rectangular.

Example output

{
"postingId": "abc123def456",
"roleTitle": "Senior Backend Developer",
"employerName": "Acme Corp",
"employerRating": 4.2,
"workLocation": "Austin, TX",
"payRange": "$130,000 - $160,000 a year",
"employmentType": "full-time",
"remoteFriendly": false,
"listedDate": "2 days ago",
"summaryText": "We are looking for a Senior Backend Developer to join our growing platform team...",
"applyUrl": "https://www.indeed.com/viewjob?jk=abc123def456",
"quickApply": true,
"collectedAt": "2026-06-29T10:30:00+00:00"
}

Output fields

FieldTypeDescription
postingIdstringIndeed's unique identifier for the listing.
roleTitlestringPosition title as written by the employer.
employerNamestringName of the hiring company.
employerRatingnumberCompany star rating when shown, e.g. 3.8.
workLocationstringCity, state, or country attached to the role.
payRangestringPosted pay if listed, e.g. $80,000-$120,000 a year.
employmentTypestringContract kind such as full-time or contract.
remoteFriendlybooleantrue when the listing reads as remote or work-from-home.
listedDatestringRelative posting date, e.g. 3 days ago.
summaryTextstringShort description shown on the results card.
applyUrlstringDirect link to the job detail and apply page.
quickApplybooleantrue when Indeed's quick-apply flow is offered.
collectedAtstringISO 8601 timestamp of when the row was captured.

Tips for best results

  • Test with one keyword first. Run a single search before a wide sweep so URL or location quirks show up early.
  • Combine keywords and places to cover a market. Three keywords across three cities gives you nine searches in one dataset — useful for comparing the same role between markets.
  • Reach for employer for a single company. Drop a company name in and the scraper reads its /cmp page instead of the open search.
  • Expect blanks on sparse cards. Pay and rating are not on every listing; those fields return null and that is normal, not a failure.
  • Raise timeoutSeconds if later pages stall. Push it toward 180 when you see repeated 502s deeper into a run.

How can I use Indeed job data?

How can I use the Indeed Job Listings Scraper to track hiring demand across cities? Put your target roles in keywords and your markets in places. The scraper runs every keyword-and-city pair and returns each listing's title, employer, pay range, and location in one dataset. Group the rows by workLocation to compare how demand for a skill differs from one city to the next.

How do I scrape Indeed jobs from one specific company? Set employer to the company name. The scraper switches to that company's /cmp page and returns its current openings with titles, locations, pay, and apply links — handy for keeping tabs on a competitor's hiring or researching an employer before you apply.

How can I build a salary benchmark from Indeed listings? Search a role across your markets and read the payRange field, which carries the pay an employer actually posted. Filter with employmentType and postedWithin to keep the sample current, then export to CSV or Excel to chart pay by city or contract type.

How do I export Indeed job data for analysis? Every run writes to an Apify dataset you can download as JSON, CSV, Excel, or XML from the Storage tab. Each row follows the same schema, so it drops straight into a spreadsheet, a database, or a BI tool with no reshaping.

Our actors are ethical and do not extract any private user data, such as email addresses or private contact information. They only extract what the user has chosen to share publicly. We therefore believe that our actors, when used for ethical purposes by Apify users, are safe.

However, you should be aware that your results could contain personal data. Personal data is protected by the GDPR in the European Union and by other regulations around the world. You should not scrape personal data unless you have a legitimate reason to do so. If you're unsure whether your reason is legitimate, consult your lawyers.

You can also read Apify's blog post on the legality of web scraping.

Support

Questions, feature requests, or a field you'd like added? Reach out at data.apify@proton.me and we'll get back to you.