๐Ÿš€ Indeed jobs scraper [PPR] avatar

๐Ÿš€ Indeed jobs scraper [PPR]

Pricing

$5.00 / 1,000 jobs

Go to Apify Store
๐Ÿš€ Indeed jobs scraper [PPR]

๐Ÿš€ Indeed jobs scraper [PPR]

Pay per result - Fast and reliable Indeed Job Scraper! ๐Ÿš€ Extract job listings with company details effortlessly with advanced filters, avoid blocking, and enjoy lightning-speed execution. Build your analytics, automate searches, or benchmark salariesโ€”all with seamless outputs. Try it now for free

Pricing

$5.00 / 1,000 jobs

Rating

4.6

(37)

Developer

borderline

borderline

Maintained by Community

Actor stats

272

Bookmarked

25K

Total users

2.4K

Monthly active users

0.44 hours

Issues response

10 days ago

Last modified

Categories

Share

๐Ÿ“„ Indeed Job Scraper | (PPR) Pay per results version

Feel free to open issues to suggest new features or report bugs!

Welcome to the Indeed Job Scraper! ๐Ÿš€ Extract detailed job listing data from Indeed seamlessly and build your own job market analytics, databases, or even automate your job searches. Designed for ease-of-use and power, this tool will supercharge your data needs! ๐Ÿ”

๐Ÿ“ฆ What Can You Extract?

Jump directly to the fields you need:

  1. ๐Ÿš€ Job Essentials
  2. ๐Ÿข Company Info
  3. ๐Ÿ“ Location & Geodata
  4. ๐Ÿ’ฐ Compensation & Benefits
  5. ๐Ÿ“ƒ Description & Requirements
  6. ๐Ÿ“ Application & Hiring Details
  7. ๐ŸŒ Language & Locale
  8. ๐Ÿ”Ž Scraping Metadata

๐Ÿ’ป How to Use

1๏ธโƒฃ Input Requirements:

You can now use two different approaches:

Option A: URL-based scraping

ParameterDescriptionExampleRequired?
urlsArray of search / company URLs["https://indeed.com/jobs?q=developer", "https://indeed.com/cmp/Google"]Yes
maxRowsPerUrlMaximum number of results to scrape per URL50No
  • All parameters of Option B will be omitted if you chose this option.

Option B: Traditional search using parameters & filters (query and country are required unless you provide URLs):

The scraper accepts the following inputs and their respective enum options, indicating if they are required:

ParameterDescriptionExampleEnum OptionsRequired?
queryJob title or search keyword."data analyst"-Yes
countryCountry code."us""ar", "au", "at", "bh", "be", "br", "ca", "cl", "cn", "co", "cz", "dk", "fi", "fr", "de", "gr", "hk", "hu", "in", "id", "ie", "il", "it", "jp", "kw", "lu", "my", "mx", "ma", "nl", "nz", "no", "om", "pe", "ph", "pl", "pt", "qa", "ro", "sa", "sg", "za", "kr", "es", "se", "ch", "tw", "tr", "ua", "ae", "uk", "us", "ve", "vn", "cr", "ec", "eg", "ng", "pk", "pa", "th", "uy"Yes
locationSearch location."San Francisco, CA"-No
radiusSearch radius in miles."10""0", "5", "10", "15", "25", "35", "50", "100"No
jobTypeType of job (e.g., fulltime, parttime)."fulltime""fulltime", "parttime", "contract", "internship", "temporary", "permanent", "seasonal", "freelance"No
levelExperience level (e.g., entry_level, senior_level)."entry_level""entry_level", "mid_level", "senior_level" (US only)No
sortSort results by relevance or date."date""relevance", "date"No
fromDaysLimit to jobs posted within a certain number of days."7""1", "3", "7", "14"No
remoteFilter for remote or hybrid jobs."remote""remote", "hybrid"No
maxRowsMaximum number of jobs to scrape.100-No
enableUniqueJobsSave only unique jobs (skip duplicates).falsetrue, falseNo
includeSimilarJobsInclude "View similar jobs" results.truetrue, falseNo

Input Example (URL-based):

{
"urls": [
"https://indeed.com/jobs?q=developer",
"https://indeed.com/cmp/Google/jobs"
],
"maxRowsPerUrl": 50
}

Input Example (Traditional parameters & filters):

{
"country": "us",
"query": "data analyst",
"location": "New York, NY",
"maxRows": 50,
"radius": "25",
"jobType": "fulltime",
"sort": "relevance",
"fromDays": "7",
"remote": "remote"
}

2๏ธโƒฃ Run the Scraper:

  1. Sign up on Apify.
  2. Add the scraper to your Apify account.
  3. Configure your input JSON.
  4. Click "Start" to begin scraping.

3๏ธโƒฃ Output :

Jump directly to the fields you need:

  1. ๐Ÿš€ Job Essentials
  2. ๐Ÿข Company Info
  3. ๐Ÿ“ Location & Geodata
  4. ๐Ÿ’ฐ Compensation & Benefits
  5. ๐Ÿ“ƒ Description & Requirements
  6. ๐Ÿ“ Application & Hiring Details
  7. ๐ŸŒ Language & Locale
  8. ๐Ÿ”Ž Scraping Metadata

๐Ÿ›  Sample Output Data:

{
"title": "Remote Customer Support Representative, Professional Services",
"normalizedTitle": "customer support representative",
"displayTitle": "Remote Customer Support Representative",
"isRemote": true,
"jobType": ["Full-time", "Remote"],
"companyName": "American Heart Association",
"companyUrl": "https://www.indeed.com/cmp/American-Heart-Association",
"companyLogoUrl": "https://d2q79iu7y748jz.cloudfront.net/s/_squarelogo/256x256/2b22f028a31bec649682434b83dd2804",
"companyHeaderUrl": "https://d2q79iu7y748jz.cloudfront.net/s/_headerimage/1960x400/1cf333dc972583d2e1c9df18c4f23d5e",
"rating": {
"rating": 3.9,
"count": 885
},
"emails": ["hr@heart.jobs"],
"companyAddresses": ["Dallas, TX"],
"companyNumEmployees": "1,001 to 5,000",
"companyRevenue": "$500M to $1B (USD)",
"companyIndustry": "ASSOCIATION",
"companyDescription": "The American Heart Association is a relentless force for a world of longer, healthier lives. Through collaboration ...",
"companyFounded": {
"year": 1924
},
"companyBriefDescription": "The American Heart Association is the nationโ€™s oldest, largest voluntary organization devoted to ...",
"companyLinks": {
"facebook": "https://www.facebook.com/theahalife",
"instagram": "https://www.instagram.com/theahalife",
"twitter": "",
"customLinks": [
{
"name": "AHA Careers Site",
"url": "https://heart.jobs/"
}
],
"corporateWebsite": "http://www.heart.org"
},
"companyCeo": {
"name": "Nancy A. Brown",
"photoUrl": "https://d2q79iu7y748jz.cloudfront.net/s/_ceophoto/512x512/c79ae9f355378e5e78738e1ac5e7fee7",
"startDate": null
},
"location": {
"countryCode": "US",
"country": "United States",
"city": "Dallas",
"formattedAddressShort": "Dallas, TX",
"formattedAddressLong": " Dallas, Texas 75231-4596, US",
"postalCode": "75231",
"latitude": 32.814034,
"longitude": -96.815,
"streetAddress": "7272 Greenville Ave.",
"fullAddress": "7272 Greenville Ave. Dallas, Texas 75231-4596, US"
},
"benefits": ["Health insurance", "Paid time off", "Retirement plan"],
"occupation": [
"Customer Support & Client Services Occupations",
"Sales, Retail & Customer Support Occupations"
],
"occupationMostLikely": ["Customer Support & Client Services Occupations"],
"socialInsurance": ["Health insurance"],
"attributes": [
"Bilingual",
"Microsoft Word",
"Spanish",
"Wellness program",
"Microsoft Outlook",
"Hourly pay"
],
"employerProvidedAttributes": ["Full-time", "Work from home"],
"requirements": [
{
"label": "Engineering",
"requirementSeverity": "REQUIRED"
},
{
"label": "Ability to lift 50 pounds",
"requirementSeverity": "PREFERRED"
},
{
"label": "Associate's degree",
"requirementSeverity": "PREFERRED"
}
],
"shiftAndSchedule": ["Monday to Friday"],
"workingSystem": ["Flextime"],
"descriptionText": "Provide tier I technical support for inbound calls and emails...",
"descriptionHtml": "<p>Provide tier I technical support for inbound calls and emails</p>",
"salary": {
"salaryText": "$20 - $22 an hour",
"salaryType": "hourly",
"salaryMax": 350,
"salaryMin": 250,
"salarySource": "EXTRACTION",
"salaryCurrency": "USD"
},
"age": "Just posted",
"postedToday": true,
"isRepost": false,
"isLatestPost": true,
"datePublished": "2025-02-24",
"hiringDemand": {
"isUrgentHire": true,
"isHighVolumeHiring": false
},
"organicApplyStarts": 11,
"numOfCandidates": 3,
"expired": false,
"isSponsored": false,
"scrapingInfo": {
"page": 12,
"index": 3
},
"source": "American Heart Association",
"sourceEmployerName": "American Heart Association",
"feedSourceType": "EMPLOYER",
"jobUrl": "https://www.indeed.com/viewjob?jk=6ae7e4ae7ac60636",
"applyUrl": "https://rr.jobsyn.org/9ECBB26665F341FCA3EAB747075CAA9B1554",
"isEasyApply": true,
"easyApplyUrl": "https://smartapply.indeed.com/beta/indeedapply/applybyapplyablejobid?indeedApplyableJobId=97daa076-c18b-423e-b388-077de41528c2",
"campaignCount": 1,
"jobKey": "1e6e49448374145b",
"refNum": "c742e6fd-fc71-45e0-91aa-5c228697d339",
"scrapedAt": "2026-09-19T08:42:11.204Z",
"language": "en",
"locale": "us"
}

๐Ÿš€ Job Essentials

  • title
    Example: "Remote Customer Support Representative, Professional Services"

  • normalizedTitle
    Indeed's normalized form of the title, useful to group postings that describe the same role under different wordings. Example: "setter"

  • displayTitle
    Title as Indeed renders it on the listing page, often shorter than the one the employer published. Example: "Setter"

  • isRemote
    Boolean: true / false

  • jobType
    Example: ["Full-time", "Remote"]

  • age
    Example: "Just posted", "1 day ago", etc.

  • postedToday
    Boolean: true / false

  • isRepost
    Boolean: true / false. Whether the posting is a republication of an earlier one. Lets you separate genuinely new hiring demand from recycled listings.

  • isLatestPost
    Boolean: true / false. Whether this is the most recent version of the posting. false marks an older copy the employer has since republished.

  • isSponsored
    Boolean: true / false. Whether the posting appeared as a paid/sponsored placement in the search results (vs an organic listing). This reflects how the job appeared in this search โ€” the same job can be sponsored in one query and organic in another. Useful to filter out promoted listings or to track ad placement.

  • datePublished
    Example: "2025-02-24"


๐Ÿข Company Info

  • companyName
    Example: "American Heart Association"

  • companyUrl
    Example: "https://www.indeed.com/cmp/American-Heart-Association"

  • companyLogoUrl
    Direct link to the company's logo

  • companyHeaderUrl
    Image or banner link shown on the company profile

  • rating
    Object containing rating info, e.g.:

    {
    "rating": 3.9,
    "count": 885
    }
  • emails
    Array of any emails found (e.g., ["hr@heart.jobs"])

  • companyAddresses
    E.g., ["Dallas, TX"]

  • companyNumEmployees
    Example: "1,001 to 5,000"

  • companyRevenue
    Example: "$500M to $1B (USD)"

  • companyIndustry
    Example: "ASSOCIATION"

  • companyDescription
    Full text describing the company

  • companyFounded
    Object with founding year:

    {
    "year": 1924
    }
  • companyBriefDescription
    Shorter summary of the company

  • companyLinks
    Social media links, official site, custom links, e.g.:

    {
    "facebook": "https://facebook.com/... ",
    "instagram": "https://instagram.com/... ",
    "twitter": "",
    "customLinks": [
    {
    "name": "AHA Careers Site",
    "url": "https://heart.jobs/"
    }
    ],
    "corporateWebsite": "http://www.heart.org"
    }
  • companyCeo
    Object describing CEO (name, photo, etc.):

    {
    "name": "Nancy A. Brown",
    "photoUrl": "https://...",
    "startDate": null
    }

๐Ÿ“ Location & Geodata

  • location.admin1Code
    State in the United States ("TX", "CA"), constituent country in the United Kingdom ("ENG"). Absent on fully remote postings, which have no physical location.

  • location.admin2Code
    FIPS county code in the United States ("113"), region in the United Kingdom ("NW").

  • location.admin3Code
    The finest administrative division, where the country has one โ€” county in the United Kingdom ("LAN"). Absent for United States postings, which stop at the county level.

Most of these fields will be under a location object, for instance:

  • countryCode (e.g., "US")
  • country (e.g., "United States")
  • city (e.g., "Dallas")
  • postalCode (e.g., "75231")
  • latitude (e.g., 32.814034)
  • longitude (e.g., -96.815)
  • streetAddress (e.g., "7272 Greenville Ave.")
  • formattedAddressShort (e.g., "Dallas, TX")
  • formattedAddressLong (e.g., "Dallas, Texas 75231-4596, US")
  • fullAddress (combined street, city, state, postal code, etc.)

๐Ÿ’ฐ Compensation & Benefits

  • salary
    An object containing detailed pay data:
    {
    "salaryText": "$20 - $22 an hour",
    "salaryType": "hourly",
    "salaryMax": 350,
    "salaryMin": 250,
    "salarySource": "EXTRACTION",
    "salaryCurrency": "USD"
    }
  • benefits
    Example: ["Health insurance", "Paid time off", "Retirement plan"]
  • socialInsurance
    Example: ["Health insurance"]

๐Ÿ“ƒ Description & Requirements

  • descriptionText
    Plain-text version of the job description
  • descriptionHtml
    HTML-rich version of the job description
  • occupation
    Example: ["Customer Support & Client Services Occupations"]
  • occupationMostLikely
    The occupation Indeed considers most likely for this posting, from the same taxonomy as occupation. Usually one entry, occasionally more. Example: ["Sales Lead Generators & Telesales Executives"]
  • attributes
    E.g., ["Bilingual", "Microsoft Word", "Wellness program"]
  • employerProvidedAttributes
    The attributes the employer declared itself, as opposed to attributes, which Indeed infers from the posting text. Use it when you need to trust the contract type rather than a guess. E.g., ["Part-time", "Temp to perm", "Work from home"]
  • requirements
    Array with label + requirementSeverity:
    [
    { "label": "Engineering", "requirementSeverity": "REQUIRED" },
    { "label": "Ability to lift 50 pounds", "requirementSeverity": "PREFERRED" }
    ]
  • shiftAndSchedule
    Example: ["Monday to Friday"]
  • workingSystem
    Example: ["Remote", "On-site", "Hybrid"]

๐Ÿ“ Application & Hiring Details

  • jobUrl
    Indeed listing link (e.g., "https://www.indeed.com/viewjob?jk=... ")

  • applyUrl
    Direct link for applying to the job (when available)

  • isEasyApply
    Boolean: true / false. Whether the posting accepts Indeed's one-click application. Absent โ€” rather than false โ€” when the information could not be retrieved, which includes expired postings, where no apply link exists at all.

  • easyApplyUrl
    The one-click application endpoint itself. Not the same thing as applyUrl, which points at the posting page. Example: "https://smartapply.indeed.com/beta/indeedapply/applybyapplyablejobid?indeedApplyableJobId=97daa076"

  • campaignCount
    Number of funded advertising campaigns attached to this posting. 0 means the employer is not paying to promote it. Unlike isSponsored, this does not depend on the search query that found the job โ€” it is a property of the posting itself.

  • feedSourceType
    Who published the posting to Indeed: "EMPLOYER" for a direct employer posting, "RECRUITER" when it came through a staffing agency. The distinction most recruiters filter on first.

  • sourceEmployerName
    Employer name as declared by the source feed. It differs from companyName when an agency posts on a client's behalf.

  • hiringDemand
    Indicates urgency or volume:

    {
    "isUrgentHire": true,
    "isHighVolumeHiring": false
    }
  • organicApplyStarts
    Number of users who initiated an application. Rarely published by Indeed โ€” expect it to be absent on most listings.

  • numOfCandidates
    Approximate number of applicants. Rarely published by Indeed โ€” expect it to be absent on most listings.

  • expired
    Boolean indicating if the job is no longer active


๐ŸŒ Language & Locale

  • language (e.g., "en")
  • locale Country domain the listing was scraped from, lowercased (e.g., "us", "fr", "de") โ€” not a POSIX locale.

๐Ÿ”Ž Scraping Metadata

  • jobKey
    Unique identifier for the job post (e.g., "1e6e49448374145b")
  • refNum
    The employer's own reference for this posting, as carried by the job feed. Lets you match a posting against an applicant tracking system. Example: "c742e6fd-fc71-45e0-91aa-5c228697d339"
  • scrapedAt
    ISO 8601 timestamp of when this record was collected. Example: "2026-09-19T08:42:11.204Z"
  • source
    Where the listing originated (e.g., "American Heart Association")
  • scrapingInfo
    Object containing:
    {
    "page": 12,
    "index": 3,
    "inputUrl": "https://www.indeed.com/jobs?q=engineer&l=Austin%2C+TX"
    }
    page is the search page the listing came from and index its rank on that page, so you can rebuild Indeed's original ordering. inputUrl is only set in URL mode, and tells you which of your start URLs produced the row.

๐Ÿค” Why Use This Scraper?

  • ๐Ÿ•ต๏ธ Market Research: Analyze job trends, salaries, and skills in demand.
  • ๐Ÿ“Š Analytics: Build custom dashboards for hiring trends.
  • ๐Ÿ“š Database Creation: Organize and store job listings for internal use.
  • ๐Ÿ’ธ Salary Benchmarking: Compare wages across regions and industries.
  • ๐Ÿ“ฉ Job Search Automation: Streamline your job hunting process with tailored searches.
  • ๐Ÿ”Ž Competitive Insights: Track competitor hiring practices.

๐Ÿ“Š Output Options:

Once scraping is complete, you can download results in multiple formats:

  • JSON
  • CSV
  • Excel
  • XML
  • HTML

๐ŸŒŸ Key Features

  • ๐Ÿ’จ Fast Performance: Handles large datasets efficiently.
  • ๐Ÿ“‹ Flexible Outputs: Multiple formats for seamless integration.
  • ๐Ÿ”„ Up-to-Date Results: Ensures the freshest job listings.
  • โš™๏ธ API Integration: Programmatically manage scrapes with the Apify API.
  • ๐Ÿ›  Customizable Filters: Tailor searches to your exact needs.

๐Ÿ“š Integration Options

  • Zapier & Make: Automate workflows with tools like Google Sheets or Slack.
  • Webhooks: Get notified when a scrape is complete.
  • Apify API: Manage scrapes, fetch results, and monitor performance with RESTful API endpoints.

๐Ÿ’ฐ Cost and Limitations

  • Pricing: Costs depend on the size of your scrape. Start with small batches to estimate.
  • Limits: The scraper can typically return over 1,000 results per run but may vary depending on input complexity and Indeedโ€™s restrictions.

๐Ÿš€ Start Scraping Today!

Unleash the power of job data! ๐ŸŽฏ Click here to begin.

For detailed documentation and tutorials, visit our Apify Docs.


โ„น๏ธ Good to Know

Independent tool. This Actor is not affiliated with, endorsed by, or connected to Indeed, Inc. "Indeed" and related marks belong to their respective owners, and appear here only to describe what the tool does.

Public data only. It reads the pages any visitor can see โ€” public search results and public job postings. No account, no sign-in, no credentials, nothing behind a login or a paywall.

Contact details. When an employer publishes a hiring email or a name in its posting, you get it in emails and contacts โ€” the usual privacy rules apply to how you use it.