{
  "data": {
    "id": "sqbMLB30NaUVc43cb",
    "actId": "RXu7Xe475tOdKeSaK",
    "userId": "NL4ThgItAwaoBlffQ",
    "startedAt": "2026-10-17T15:55:42.330Z",
    "finishedAt": "2026-10-17T15:56:10.070Z",
    "status": "SUCCEEDED",
    "meta": {
      "origin": "CLI"
    },
    "stats": {
      "durationMillis": 27654,
      "runTimeSecs": 27.654,
      "computeUnits": 0.030726666666666666,
      "imageSizeBytes": 3139688448
    },
    "options": {
      "useCache": true,
      "betaPackages": false,
      "memoryMbytes": 4096,
      "diskMbytes": 8192
    },
    "createdByOrganizationMemberUserId": "zifX0mkAFMHe8CatY",
    "exitCode": 0,
    "inputSchema": "{\n  \"title\": \"Indeed Job Search Scraper Input\",\n  \"description\": \"Search Indeed job listings by keyword and location in 62 countries, or paste Indeed search, company and job URLs. Returns full descriptions, structured salaries, benefits, company details and apply links.\",\n  \"type\": \"object\",\n  \"schemaVersion\": 1,\n  \"properties\": {\n    \"searchQueries\": {\n      \"title\": \"Search queries\",\n      \"type\": \"array\",\n      \"description\": \"Job searches. Write a location after \\\" in \\\" to search one city, e.g. `software engineer in New York`, `registered nurse in Houston, TX`. A query without \\\" in \\\" uses the Location field below, or searches the whole country.\",\n      \"editor\": \"stringList\",\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"prefill\": [\n        \"web developer in San Francisco\"\n      ]\n    },\n    \"startUrls\": {\n      \"title\": \"Indeed URLs\",\n      \"type\": \"array\",\n      \"description\": \"Indeed pages to scrape: filtered search URLs (filters in the URL are honored), company job pages like `https://www.indeed.com/cmp/Google/jobs`, or individual job links like `https://www.indeed.com/viewjob?jk=...`. Country sites such as `uk.indeed.com` work too.\",\n      \"editor\": \"stringList\",\n      \"items\": {\n        \"type\": \"string\"\n      }\n    },\n    \"country\": {\n      \"title\": \"Country\",\n      \"type\": \"string\",\n      \"description\": \"Indeed country site to search. Results come in the site's language and salaries in its currency.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"US\",\n        \"CA\",\n        \"GB\",\n        \"AU\",\n        \"NZ\",\n        \"IE\",\n        \"IN\",\n        \"SG\",\n        \"MY\",\n        \"PH\",\n        \"HK\",\n        \"PK\",\n        \"NG\",\n        \"ZA\",\n        \"AE\",\n        \"SA\",\n        \"QA\",\n        \"KW\",\n        \"BH\",\n        \"OM\",\n        \"EG\",\n        \"IL\",\n        \"DE\",\n        \"AT\",\n        \"CH\",\n        \"LU\",\n        \"FR\",\n        \"BE\",\n        \"MA\",\n        \"NL\",\n        \"ES\",\n        \"IT\",\n        \"PT\",\n        \"BR\",\n        \"MX\",\n        \"AR\",\n        \"CL\",\n        \"CO\",\n        \"PE\",\n        \"VE\",\n        \"CR\",\n        \"EC\",\n        \"PA\",\n        \"UY\",\n        \"PL\",\n        \"CZ\",\n        \"HU\",\n        \"RO\",\n        \"GR\",\n        \"SE\",\n        \"NO\",\n        \"DK\",\n        \"FI\",\n        \"TR\",\n        \"UA\",\n        \"JP\",\n        \"KR\",\n        \"CN\",\n        \"TW\",\n        \"ID\",\n        \"TH\",\n        \"VN\"\n      ],\n      \"enumTitles\": [\n        \"United States\",\n        \"Canada\",\n        \"United Kingdom\",\n        \"Australia\",\n        \"New Zealand\",\n        \"Ireland\",\n        \"India\",\n        \"Singapore\",\n        \"Malaysia\",\n        \"Philippines\",\n        \"Hong Kong\",\n        \"Pakistan\",\n        \"Nigeria\",\n        \"South Africa\",\n        \"United Arab Emirates\",\n        \"Saudi Arabia\",\n        \"Qatar\",\n        \"Kuwait\",\n        \"Bahrain\",\n        \"Oman\",\n        \"Egypt\",\n        \"Israel\",\n        \"Germany\",\n        \"Austria\",\n        \"Switzerland\",\n        \"Luxembourg\",\n        \"France\",\n        \"Belgium\",\n        \"Morocco\",\n        \"Netherlands\",\n        \"Spain\",\n        \"Italy\",\n        \"Portugal\",\n        \"Brazil\",\n        \"Mexico\",\n        \"Argentina\",\n        \"Chile\",\n        \"Colombia\",\n        \"Peru\",\n        \"Venezuela\",\n        \"Costa Rica\",\n        \"Ecuador\",\n        \"Panama\",\n        \"Uruguay\",\n        \"Poland\",\n        \"Czech Republic\",\n        \"Hungary\",\n        \"Romania\",\n        \"Greece\",\n        \"Sweden\",\n        \"Norway\",\n        \"Denmark\",\n        \"Finland\",\n        \"Turkey\",\n        \"Ukraine\",\n        \"Japan\",\n        \"South Korea\",\n        \"China\",\n        \"Taiwan\",\n        \"Indonesia\",\n        \"Thailand\",\n        \"Vietnam\"\n      ],\n      \"default\": \"US\",\n      \"prefill\": \"US\"\n    },\n    \"location\": {\n      \"title\": \"Location\",\n      \"type\": \"string\",\n      \"description\": \"City, region or postal code for searches that don't name a location themselves, e.g. `Austin, TX`, `10001`, `London`. Leave empty to search the whole country. Ignored for remote-only searches (remote jobs are searched country-wide).\",\n      \"editor\": \"textfield\",\n      \"prefill\": \"San Francisco\"\n    },\n    \"radius\": {\n      \"title\": \"Search radius\",\n      \"type\": \"integer\",\n      \"description\": \"How far from the location to search.\",\n      \"default\": 25,\n      \"minimum\": 0,\n      \"maximum\": 500,\n      \"prefill\": 25\n    },\n    \"radiusUnit\": {\n      \"title\": \"Radius unit\",\n      \"type\": \"string\",\n      \"description\": \"Unit for the search radius.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"miles\",\n        \"kilometers\"\n      ],\n      \"enumTitles\": [\n        \"Miles\",\n        \"Kilometers\"\n      ],\n      \"default\": \"miles\"\n    },\n    \"sort\": {\n      \"title\": \"Sort\",\n      \"type\": \"string\",\n      \"description\": \"How to order results: by relevance to the keywords, or with the newest postings first.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"relevance\",\n        \"date\"\n      ],\n      \"enumTitles\": [\n        \"Relevance\",\n        \"Newest first\"\n      ],\n      \"default\": \"relevance\"\n    },\n    \"datePosted\": {\n      \"title\": \"Date posted\",\n      \"type\": \"string\",\n      \"description\": \"Only jobs posted within this window.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"\",\n        \"1\",\n        \"3\",\n        \"7\",\n        \"14\",\n        \"30\"\n      ],\n      \"enumTitles\": [\n        \"Any time\",\n        \"Last 24 hours\",\n        \"Last 3 days\",\n        \"Last 7 days\",\n        \"Last 14 days\",\n        \"Last 30 days\"\n      ],\n      \"default\": \"\"\n    },\n    \"jobType\": {\n      \"title\": \"Job type\",\n      \"type\": \"string\",\n      \"description\": \"Only jobs of this employment type.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"\",\n        \"fulltime\",\n        \"parttime\",\n        \"contract\",\n        \"temporary\",\n        \"internship\",\n        \"permanent\",\n        \"seasonal\",\n        \"perdiem\",\n        \"freelance\",\n        \"apprenticeship\",\n        \"volunteer\"\n      ],\n      \"enumTitles\": [\n        \"Any type\",\n        \"Full-time\",\n        \"Part-time\",\n        \"Contract\",\n        \"Temporary\",\n        \"Internship\",\n        \"Permanent\",\n        \"Seasonal\",\n        \"Per diem\",\n        \"Freelance\",\n        \"Apprenticeship\",\n        \"Volunteer\"\n      ],\n      \"default\": \"\"\n    },\n    \"workplaceType\": {\n      \"title\": \"Workplace\",\n      \"type\": \"string\",\n      \"description\": \"Remote, hybrid or on-site jobs only. Remote searches run country-wide because Indeed's app index does not geo-attribute remote jobs.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"\",\n        \"remote\",\n        \"hybrid\",\n        \"inPerson\"\n      ],\n      \"enumTitles\": [\n        \"Any workplace\",\n        \"Remote only\",\n        \"Hybrid\",\n        \"On-site\"\n      ],\n      \"default\": \"\"\n    },\n    \"experienceLevel\": {\n      \"title\": \"Experience level\",\n      \"type\": \"string\",\n      \"description\": \"Only jobs asking for this experience level.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"\",\n        \"noExperience\",\n        \"entry\",\n        \"mid\",\n        \"senior\"\n      ],\n      \"enumTitles\": [\n        \"Any level\",\n        \"No experience needed\",\n        \"Entry level\",\n        \"Mid level\",\n        \"Senior level\"\n      ],\n      \"default\": \"\"\n    },\n    \"educationLevel\": {\n      \"title\": \"Education level\",\n      \"type\": \"string\",\n      \"description\": \"Only jobs asking for this education level.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"\",\n        \"noDegree\",\n        \"highSchool\",\n        \"associate\",\n        \"bachelor\",\n        \"master\",\n        \"doctoral\"\n      ],\n      \"enumTitles\": [\n        \"Any education\",\n        \"No degree needed\",\n        \"High school\",\n        \"Associate degree\",\n        \"Bachelor's degree\",\n        \"Master's degree\",\n        \"Doctoral degree\"\n      ],\n      \"default\": \"\"\n    },\n    \"easyApplyOnly\": {\n      \"title\": \"Easy Apply only\",\n      \"type\": \"boolean\",\n      \"description\": \"Only jobs that accept Indeed's one-click application.\",\n      \"default\": false,\n      \"prefill\": false\n    },\n    \"salaryMin\": {\n      \"title\": \"Minimum salary\",\n      \"type\": \"integer\",\n      \"description\": \"Only jobs paying at least this much per year (employer-stated salaries; hourly and monthly pay is compared at its annualized value). Jobs without a stated salary are kept.\",\n      \"minimum\": 0,\n      \"maximum\": 10000000\n    },\n    \"maxItems\": {\n      \"title\": \"Maximum jobs\",\n      \"type\": \"integer\",\n      \"description\": \"Maximum number of job listings to save across all searches.\",\n      \"default\": 50,\n      \"minimum\": 1,\n      \"maximum\": 10000,\n      \"prefill\": 3\n    },\n    \"maxItemsPerSearch\": {\n      \"title\": \"Maximum jobs per search\",\n      \"type\": \"integer\",\n      \"description\": \"Optional cap per search query or URL. Defaults to the overall Maximum jobs value.\",\n      \"minimum\": 1,\n      \"maximum\": 10000\n    },\n    \"includeDescriptionHtml\": {\n      \"title\": \"Include description HTML\",\n      \"type\": \"boolean\",\n      \"description\": \"Also save each job description as HTML next to the plain text.\",\n      \"default\": false,\n      \"prefill\": false\n    },\n    \"includeCompanyRatings\": {\n      \"title\": \"Include company ratings\",\n      \"type\": \"boolean\",\n      \"description\": \"Look up each employer's Indeed rating and review count. Off by default; a rating that cannot be read is left out of the record.\",\n      \"default\": false,\n      \"prefill\": false\n    },\n    \"includeContacts\": {\n      \"title\": \"Include contacts from descriptions\",\n      \"type\": \"boolean\",\n      \"description\": \"Extract email addresses and phone numbers written in the posting's own description text (pattern extraction, not an Indeed field). Off by default.\",\n      \"default\": false,\n      \"prefill\": false\n    },\n    \"includeCompanyReviews\": {\n      \"title\": \"Include company reviews\",\n      \"type\": \"boolean\",\n      \"description\": \"Fetch the first page of each employer's Indeed reviews (up to 20 full reviews with pros/cons and sub-ratings); combine with Include company ratings. Off by default.\",\n      \"default\": false,\n      \"prefill\": false\n    },\n    \"includeCompanySalaries\": {\n      \"title\": \"Include company salary reports\",\n      \"type\": \"boolean\",\n      \"description\": \"Fetch each employer's Indeed salaries page (total salary reports, satisfaction and the broader salary-by-title list); combine with Include company ratings. Off by default.\",\n      \"default\": false,\n      \"prefill\": false\n    },\n    \"expandBeyondCeiling\": {\n      \"title\": \"Expand beyond Indeed's search ceiling\",\n      \"type\": \"boolean\",\n      \"description\": \"Indeed's app search stops at roughly 600-900 unique jobs per query. When a search reaches that ceiling, split its time range into date windows and merge them, so the run returns the full set Indeed's index holds for the query. Narrow searches are handled in a single pass.\",\n      \"default\": true,\n      \"prefill\": false\n    }\n  },\n  \"required\": []\n}",
    "readme": "# Indeed Job Search Scraper with Salary & Benefits Data\n\nTurn any Indeed job search into a structured, analysis-ready dataset. Give it keywords, a location and optional filters — or paste search, company or single-job URLs — and receive each posting with its full description, salary range and pay period, benefits, remote-work model, employer details and the link candidates actually apply through. No Indeed account, cookie or API key required.\n\n## What this actor does\n\n- **Search 62 country sites** by keyword and location, with filters for date posted, job type, workplace, experience, education, Easy Apply and minimum salary\n- **Paste Indeed URLs** — filtered search links, company job pages (`/cmp/<company>/jobs`) and individual job links are all understood, and filters in a URL are honored\n- **Full descriptions, not teasers** — every listing carries the complete posting text, with optional HTML\n- **Structured compensation** — minimum, maximum, period, currency, annualized figures, and whether the range is the employer's own\n- **Employer and application data** — company size, revenue, industry, CEO and website when Indeed holds them, plus the external application link for off-site applications\n- **Beyond Indeed's search ceiling** — Indeed stops each query at roughly 600–900 unique jobs; the actor automatically splits the search into date windows and merges them, returning the full set Indeed's index holds for your query\n- **Optional employer depth** — add sub-ratings, Work-Wellbeing, CEO details, salary-by-title reports and full review pages for each hiring company\n- **Clean records** — duplicates across searches are removed by job key, and fields Indeed has no value for are left out of the record instead of being padded with blanks\n\n## Output per job\n\nIdentity\n\n- `jobKey` — Indeed's stable job identifier\n- `jobTitle`, `normalizedTitle` — title as published and Indeed's normalized form\n- `company`, `companyId`, `companyUrl`, `companyLogo`\n- `source`, `language`\n\nLocation\n\n- `location` — formatted location as Indeed shows it\n- `city`, `state`, `stateName`, `county`, `postalCode`, `streetAddress`, `neighborhood`\n- `countryCode`, `countryName`\n- `latitude`, `longitude`\n\nCompensation\n\n- `salaryText` — salary as displayed\n- `salaryMin`, `salaryMax`, `salaryType`, `salaryCurrency`\n- `salarySource` — `EMPLOYER` for the employer's own range, `INDEED_ESTIMATE` when Indeed's estimate is used\n- `salaryAnnualMin`, `salaryAnnualMax` — hourly, daily, weekly and monthly pay converted to a yearly figure\n\nClassification\n\n- `jobTypes` (JSON string) and `jobTypesList` (array) — employment types\n- `benefits` (JSON string) and `benefitsList` (array) — listed benefits\n- `employmentType`, `schedules`, `payTypes`\n- `workplaceType` — Remote / Hybrid / In-person / Office\n- `remoteWork` — Indeed's raw model value (`REMOTE_ALWAYS`, `REMOTE_HYBRID`, `ON_SITE`)\n- `experienceLevel`, `educationLevels`, `attributes`, `occupations`\n\nDescription and dates\n\n- `description`, `descriptionHtml` (when requested), `snippet`\n- `datePosted`, `datePublished` — ISO 8601 timestamps\n- `validThrough`, `isExpired`, `postedTime`\n\nApplication\n\n- `indeedApply` — accepts Indeed's one-click application\n- `applyUrl` — the employer's own application link, when it differs from Indeed\n- `urgentlyHiring`, `highVolumeHiring`\n\nCompany profile (when Indeed holds it)\n\n- `companyDescription`, `companySize`, `companyRevenue`, `companyIndustry`\n- `companyCeo` (the dossier name), `companyHeadquarters`\n- `companyRating`, `companyReviewCount` — from Indeed's data; the optional ratings lookup adds:\n  - `companyRatings` — work-life balance, pay and benefits, job security, management, culture\n  - `companyRatingTrend` — yearly rating history\n  - `companyWorkWellbeing` — Indeed's Work-Wellbeing score with its sub-scores\n  - `companyCeoName`, `companyCeoPhotoUrl`, `companyCeoApproval`, `companyFounded`\n  - `companySalaries` — average pay by job title (what Indeed reports)\n  - `companyReviewSnippets` — up to five recent review excerpts\n- `companyReviews` — up to 20 full first-page reviews with pros/cons and sub-ratings, plus `companyReviewsFound` and `companyReviewsTotal` (reviews toggle)\n- `companySalaryTotal` and `companySalarySatisfaction` — salary reports count and satisfaction ratio (salaries toggle)\n\nContacts (optional)\n\n- `emails`, `phoneNumbers` — patterns written in the posting's own description text; not an Indeed contact field\n\nProvenance\n\n- `searchQuery`, `searchLocation`, `country`\n- `recordType`, `scrapeTimestamp`\n\nSample record:\n\n```json\n{\n  \"jobKey\": \"2f2c680351b7c737\",\n  \"jobTitle\": \"Senior Software Engineer (AI Products)\",\n  \"company\": \"Brillian\",\n  \"companyUrl\": \"https://www.indeed.com/cmp/Brillian\",\n  \"location\": \"New York, NY\",\n  \"city\": \"New York\",\n  \"state\": \"NY\",\n  \"countryCode\": \"US\",\n  \"latitude\": 40.71427,\n  \"longitude\": -74.00597,\n  \"salaryText\": \"$200,000 - $240,000 a year\",\n  \"salaryMin\": 200000,\n  \"salaryMax\": 240000,\n  \"salaryType\": \"YEARLY\",\n  \"salaryCurrency\": \"USD\",\n  \"salarySource\": \"EMPLOYER\",\n  \"salaryAnnualMin\": 200000,\n  \"salaryAnnualMax\": 240000,\n  \"jobTypesList\": [\"Full-time\"],\n  \"benefitsList\": [\"Health insurance\", \"Dental insurance\", \"401(k)\", \"Vision insurance\"],\n  \"workplaceType\": \"Hybrid\",\n  \"experienceLevel\": \"Senior level\",\n  \"description\": \"About Our Company …\",\n  \"datePosted\": \"2026-06-10T14:24:55Z\",\n  \"applyUrl\": \"https://ats.example.com/careers/job/12345\",\n  \"jobUrl\": \"https://www.indeed.com/viewjob?jk=2f2c680351b7c737\",\n  \"recordType\": \"job\",\n  \"scrapeTimestamp\": \"2026-10-17T08:16:48Z\"\n}\n```\n\n## Input\n\n| Field | Type | Default | Description |\n|---|---|---|---|\n| `searchQueries` | array | – | Job searches. Put a location after \" in \": `data analyst in Austin, TX`. A query without \" in \" uses `location`, or searches the whole country |\n| `startUrls` | array | – | Indeed URLs: filtered searches, `https://www.indeed.com/cmp/Google/jobs`, or job links with `jk=` |\n| `country` | string | `US` | Indeed country site to search (62 available). Salaries come back in that country's currency and job links point to the matching site; URL tasks from other country sites work too |\n| `location` | string | – | City, region or postal code for searches that don't name one. Ignored for remote-only searches |\n| `radius` | integer | `25` | Search distance from the location (0–500) |\n| `radiusUnit` | string | `miles` | `miles` or `kilometers` |\n| `sort` | string | `relevance` | `relevance` or `date` (newest first) |\n| `datePosted` | string | – | Only jobs posted within 1, 3, 7, 14 or 30 days |\n| `jobType` | string | – | Full-time, part-time, contract, temporary, internship, permanent, seasonal, per diem, freelance, apprenticeship or volunteer |\n| `workplaceType` | string | – | `remote`, `hybrid` or `inPerson` |\n| `experienceLevel` | string | – | `noExperience`, `entry`, `mid` or `senior` |\n| `educationLevel` | string | – | `noDegree`, `highSchool`, `associate`, `bachelor`, `master` or `doctoral` |\n| `easyApplyOnly` | boolean | `false` | Only jobs accepting Indeed's one-click application |\n| `salaryMin` | integer | – | Only jobs paying at least this much per year, comparing annualized pay. Jobs with no stated salary are kept |\n| `maxItems` | integer | `50` | Overall cap across all searches (1–10000) |\n| `maxItemsPerSearch` | integer | – | Cap per search query or URL; defaults to `maxItems` |\n| `includeDescriptionHtml` | boolean | `false` | Also save each description as HTML |\n| `includeCompanyRatings` | boolean | `false` | Look up employer ratings plus sub-ratings, wellbeing, CEO details, salary-by-title reports and review snippets for each unique hiring company |\n| `includeContacts` | boolean | `false` | Extract emails and phone numbers written in the posting description |\n| `includeCompanyReviews` | boolean | `false` | Also fetch the first page of each employer's reviews: up to 20 full reviews (one extra request per company) |\n| `includeCompanySalaries` | boolean | `false` | Also fetch each employer's salaries page: total report count, satisfaction and the broader title list (one extra request per company) |\n| `expandBeyondCeiling` | boolean | `true` | Bypass Indeed's ~600–900-result search ceiling by splitting the search's date range into windows and merging the slices; narrow searches are unaffected |\n\nAt least one search query or URL is needed — or a filter plus a country.\n\n### Example: recent remote roles\n\n```json\n{\n  \"searchQueries\": [\"customer success manager\"],\n  \"country\": \"US\",\n  \"workplaceType\": \"remote\",\n  \"datePosted\": \"7\",\n  \"maxItems\": 200\n}\n```\n\n### Example: salaries in Germany\n\n```json\n{\n  \"searchQueries\": [\"Softwareentwickler in Berlin\"],\n  \"country\": \"DE\",\n  \"salaryMin\": 70000,\n  \"maxItems\": 100\n}\n```\n\n### Example: a filtered URL and a company page\n\n```json\n{\n  \"startUrls\": [\n    \"https://www.indeed.com/jobs?q=nurse&l=Chicago%2C+IL&sc=0kf%3Ajt%28fulltime%29%3B&fromage=7\",\n    \"https://www.indeed.com/cmp/Amazon/jobs\"\n  ],\n  \"maxItems\": 300\n}\n```\n\n### Example: fetch specific job links\n\n```json\n{\n  \"startUrls\": [\n    \"https://www.indeed.com/viewjob?jk=2f2c680351b7c737\",\n    \"7d7746167b22c122\"\n  ],\n  \"includeDescriptionHtml\": true\n}\n```\n\n## Use cases\n\n- **Salary benchmarking** — build numeric pay ranges by title, city and country, with annualized values ready to chart\n- **Remote-work research** — measure how much of a role is remote, hybrid or on-site\n- **Recruiting intelligence** — track which employers are hiring for a skill, where, and at what pay\n- **Job-board operators** — republish fresh listings with company and benefit data on your own board\n- **Labour-market studies** — analyse posting volumes by date window, experience level and education\n- **Lead generation** — companies hiring for a role are buying related services; export them with websites and locations\n\n## FAQ\n\n### Do I need an Indeed account or API key?\n\nNo. The actor reads Indeed's publicly available job data without any login, cookie or key.\n\n### How many jobs can one search return?\n\nIndeed's own ranking ends one query after roughly 600–900 unique jobs. With `expandBeyondCeiling` on (the default), the actor splits the search into date windows and merges them: a live test returned 2,599 unique jobs for a query whose single pass stopped at 861. It stops at the size of Indeed's app index for your query — which can be smaller than Indeed's web page count — and older than two years is not covered. Narrow searches (fewer than ~750 results) are handled in a single pass. A job found by more than one search or window is saved once — every posting has one `jobKey`.\n\n### Why is the applicant count missing?\n\nIndeed does not expose applicant numbers through its public job data; the only counter is an internal tracking value on its web search page without the displayed meaning. The actor therefore does not ship an applicant field. Posting age (`datePosted`, `postedTime`) is included.\n\n### Why do email/phone fields only appear sometimes?\n\nThey are extracted from text employers wrote in the posting, because Indeed's job data does not carry recruiter contacts. About one posting in nine includes an email. Enable `includeContacts` to add them.\n\n### Why do Indeed links return 403 to my link checker?\n\nIndeed protects its own pages with Cloudflare bot management. `jobUrl` and `companyUrl` open normally in a browser, but a clean command-line request or a datacenter connection receives 403 — sometimes a login redirect — and that is expected, not a broken URL. From an ordinary residential browser session Indeed's `/job/` pages and its apply redirects do open. `applyUrl` points directly at the employer's own application page whenever they apply off-site; those links are served raw and are machine-reachable, though a small share are dead because the employer removed the posting.\n\n### Why is the salary missing on some jobs?\n\nMany employers simply do not publish pay. Those listings have no salary fields rather than a guessed number. Indeed's own estimated pay is rendered only on its login-gated pages, so the actor ships the employer's stated salary and never substitutes an estimate; `salarySource` is `EMPLOYER` whenever a range exists.\n\n### Why do some company fields look empty?\n\nIndeed only holds company profiles for employers that maintain one. Fields like revenue, CEO or founded year are omitted when Indeed has no value, instead of being sent as blanks.\n\n### What is the difference between `indeedApply` and `applyUrl`?\n\n`indeedApply: true` means the posting accepts Indeed's one-click application. `applyUrl` is the employer's own application page — an ATS or career site — which is what you follow for off-site applications.\n\n### Will the actor get blocked?\n\nThe actor reads Indeed data through the same interface Indeed's own mobile app uses, and picks a working connection automatically. If a search cannot be loaded at all, the run says so in its status message rather than returning empty records silently.\n\n### Is this affiliated with Indeed?\n\nNo. This is an independent, third-party actor that reads Indeed's public job data; it is not operated by or affiliated with Indeed.\n",
    "actorDefinition": {
      "actorSpecification": 1,
      "name": "indeed-job-search-scraper-with-salary-and-benefits",
      "title": "Indeed Job Search Scraper with Salary & Benefits Data",
      "description": "Search Indeed by keyword and location in 62 countries, or supply Indeed search, company and job URLs, and get full job descriptions, structured salaries, benefits, remote-work status, company details and apply links. No login or API key needed.",
      "version": "1.0",
      "buildTag": "latest",
      "meta": {
        "templateId": "python-playwright"
      },
      "defaultRunOptions": {
        "build": "latest",
        "timeoutSecs": 3600,
        "memoryMbytes": 1024
      },
      "minMemoryMbytes": 256,
      "maxMemoryMbytes": 4096,
      "input": {
        "title": "Indeed Job Search Scraper Input",
        "description": "Search Indeed job listings by keyword and location in 62 countries, or paste Indeed search, company and job URLs. Returns full descriptions, structured salaries, benefits, company details and apply links.",
        "type": "object",
        "schemaVersion": 1,
        "properties": {
          "searchQueries": {
            "title": "Search queries",
            "type": "array",
            "description": "Job searches. Write a location after \" in \" to search one city, e.g. `software engineer in New York`, `registered nurse in Houston, TX`. A query without \" in \" uses the Location field below, or searches the whole country.",
            "editor": "stringList",
            "items": {
              "type": "string"
            },
            "prefill": [
              "web developer in San Francisco"
            ]
          },
          "startUrls": {
            "title": "Indeed URLs",
            "type": "array",
            "description": "Indeed pages to scrape: filtered search URLs (filters in the URL are honored), company job pages like `https://www.indeed.com/cmp/Google/jobs`, or individual job links like `https://www.indeed.com/viewjob?jk=...`. Country sites such as `uk.indeed.com` work too.",
            "editor": "stringList",
            "items": {
              "type": "string"
            }
          },
          "country": {
            "title": "Country",
            "type": "string",
            "description": "Indeed country site to search. Results come in the site's language and salaries in its currency.",
            "editor": "select",
            "enum": [
              "US",
              "CA",
              "GB",
              "AU",
              "NZ",
              "IE",
              "IN",
              "SG",
              "MY",
              "PH",
              "HK",
              "PK",
              "NG",
              "ZA",
              "AE",
              "SA",
              "QA",
              "KW",
              "BH",
              "OM",
              "EG",
              "IL",
              "DE",
              "AT",
              "CH",
              "LU",
              "FR",
              "BE",
              "MA",
              "NL",
              "ES",
              "IT",
              "PT",
              "BR",
              "MX",
              "AR",
              "CL",
              "CO",
              "PE",
              "VE",
              "CR",
              "EC",
              "PA",
              "UY",
              "PL",
              "CZ",
              "HU",
              "RO",
              "GR",
              "SE",
              "NO",
              "DK",
              "FI",
              "TR",
              "UA",
              "JP",
              "KR",
              "CN",
              "TW",
              "ID",
              "TH",
              "VN"
            ],
            "enumTitles": [
              "United States",
              "Canada",
              "United Kingdom",
              "Australia",
              "New Zealand",
              "Ireland",
              "India",
              "Singapore",
              "Malaysia",
              "Philippines",
              "Hong Kong",
              "Pakistan",
              "Nigeria",
              "South Africa",
              "United Arab Emirates",
              "Saudi Arabia",
              "Qatar",
              "Kuwait",
              "Bahrain",
              "Oman",
              "Egypt",
              "Israel",
              "Germany",
              "Austria",
              "Switzerland",
              "Luxembourg",
              "France",
              "Belgium",
              "Morocco",
              "Netherlands",
              "Spain",
              "Italy",
              "Portugal",
              "Brazil",
              "Mexico",
              "Argentina",
              "Chile",
              "Colombia",
              "Peru",
              "Venezuela",
              "Costa Rica",
              "Ecuador",
              "Panama",
              "Uruguay",
              "Poland",
              "Czech Republic",
              "Hungary",
              "Romania",
              "Greece",
              "Sweden",
              "Norway",
              "Denmark",
              "Finland",
              "Turkey",
              "Ukraine",
              "Japan",
              "South Korea",
              "China",
              "Taiwan",
              "Indonesia",
              "Thailand",
              "Vietnam"
            ],
            "default": "US",
            "prefill": "US"
          },
          "location": {
            "title": "Location",
            "type": "string",
            "description": "City, region or postal code for searches that don't name a location themselves, e.g. `Austin, TX`, `10001`, `London`. Leave empty to search the whole country. Ignored for remote-only searches (remote jobs are searched country-wide).",
            "editor": "textfield",
            "prefill": "San Francisco"
          },
          "radius": {
            "title": "Search radius",
            "type": "integer",
            "description": "How far from the location to search.",
            "default": 25,
            "minimum": 0,
            "maximum": 500,
            "prefill": 25
          },
          "radiusUnit": {
            "title": "Radius unit",
            "type": "string",
            "description": "Unit for the search radius.",
            "editor": "select",
            "enum": [
              "miles",
              "kilometers"
            ],
            "enumTitles": [
              "Miles",
              "Kilometers"
            ],
            "default": "miles"
          },
          "sort": {
            "title": "Sort",
            "type": "string",
            "description": "How to order results: by relevance to the keywords, or with the newest postings first.",
            "editor": "select",
            "enum": [
              "relevance",
              "date"
            ],
            "enumTitles": [
              "Relevance",
              "Newest first"
            ],
            "default": "relevance"
          },
          "datePosted": {
            "title": "Date posted",
            "type": "string",
            "description": "Only jobs posted within this window.",
            "editor": "select",
            "enum": [
              "",
              "1",
              "3",
              "7",
              "14",
              "30"
            ],
            "enumTitles": [
              "Any time",
              "Last 24 hours",
              "Last 3 days",
              "Last 7 days",
              "Last 14 days",
              "Last 30 days"
            ],
            "default": ""
          },
          "jobType": {
            "title": "Job type",
            "type": "string",
            "description": "Only jobs of this employment type.",
            "editor": "select",
            "enum": [
              "",
              "fulltime",
              "parttime",
              "contract",
              "temporary",
              "internship",
              "permanent",
              "seasonal",
              "perdiem",
              "freelance",
              "apprenticeship",
              "volunteer"
            ],
            "enumTitles": [
              "Any type",
              "Full-time",
              "Part-time",
              "Contract",
              "Temporary",
              "Internship",
              "Permanent",
              "Seasonal",
              "Per diem",
              "Freelance",
              "Apprenticeship",
              "Volunteer"
            ],
            "default": ""
          },
          "workplaceType": {
            "title": "Workplace",
            "type": "string",
            "description": "Remote, hybrid or on-site jobs only. Remote searches run country-wide because Indeed's app index does not geo-attribute remote jobs.",
            "editor": "select",
            "enum": [
              "",
              "remote",
              "hybrid",
              "inPerson"
            ],
            "enumTitles": [
              "Any workplace",
              "Remote only",
              "Hybrid",
              "On-site"
            ],
            "default": ""
          },
          "experienceLevel": {
            "title": "Experience level",
            "type": "string",
            "description": "Only jobs asking for this experience level.",
            "editor": "select",
            "enum": [
              "",
              "noExperience",
              "entry",
              "mid",
              "senior"
            ],
            "enumTitles": [
              "Any level",
              "No experience needed",
              "Entry level",
              "Mid level",
              "Senior level"
            ],
            "default": ""
          },
          "educationLevel": {
            "title": "Education level",
            "type": "string",
            "description": "Only jobs asking for this education level.",
            "editor": "select",
            "enum": [
              "",
              "noDegree",
              "highSchool",
              "associate",
              "bachelor",
              "master",
              "doctoral"
            ],
            "enumTitles": [
              "Any education",
              "No degree needed",
              "High school",
              "Associate degree",
              "Bachelor's degree",
              "Master's degree",
              "Doctoral degree"
            ],
            "default": ""
          },
          "easyApplyOnly": {
            "title": "Easy Apply only",
            "type": "boolean",
            "description": "Only jobs that accept Indeed's one-click application.",
            "default": false,
            "prefill": false
          },
          "salaryMin": {
            "title": "Minimum salary",
            "type": "integer",
            "description": "Only jobs paying at least this much per year (employer-stated salaries; hourly and monthly pay is compared at its annualized value). Jobs without a stated salary are kept.",
            "minimum": 0,
            "maximum": 10000000
          },
          "maxItems": {
            "title": "Maximum jobs",
            "type": "integer",
            "description": "Maximum number of job listings to save across all searches.",
            "default": 50,
            "minimum": 1,
            "maximum": 10000,
            "prefill": 3
          },
          "maxItemsPerSearch": {
            "title": "Maximum jobs per search",
            "type": "integer",
            "description": "Optional cap per search query or URL. Defaults to the overall Maximum jobs value.",
            "minimum": 1,
            "maximum": 10000
          },
          "includeDescriptionHtml": {
            "title": "Include description HTML",
            "type": "boolean",
            "description": "Also save each job description as HTML next to the plain text.",
            "default": false,
            "prefill": false
          },
          "includeCompanyRatings": {
            "title": "Include company ratings",
            "type": "boolean",
            "description": "Look up each employer's Indeed rating and review count. Off by default; a rating that cannot be read is left out of the record.",
            "default": false,
            "prefill": false
          },
          "includeContacts": {
            "title": "Include contacts from descriptions",
            "type": "boolean",
            "description": "Extract email addresses and phone numbers written in the posting's own description text (pattern extraction, not an Indeed field). Off by default.",
            "default": false,
            "prefill": false
          },
          "includeCompanyReviews": {
            "title": "Include company reviews",
            "type": "boolean",
            "description": "Fetch the first page of each employer's Indeed reviews (up to 20 full reviews with pros/cons and sub-ratings); combine with Include company ratings. Off by default.",
            "default": false,
            "prefill": false
          },
          "includeCompanySalaries": {
            "title": "Include company salary reports",
            "type": "boolean",
            "description": "Fetch each employer's Indeed salaries page (total salary reports, satisfaction and the broader salary-by-title list); combine with Include company ratings. Off by default.",
            "default": false,
            "prefill": false
          },
          "expandBeyondCeiling": {
            "title": "Expand beyond Indeed's search ceiling",
            "type": "boolean",
            "description": "Indeed's app search stops at roughly 600-900 unique jobs per query. When a search reaches that ceiling, split its time range into date windows and merge them, so the run returns the full set Indeed's index holds for the query. Narrow searches are handled in a single pass.",
            "default": true,
            "prefill": false
          }
        },
        "required": []
      },
      "output": {
        "actorOutputSchemaVersion": 1,
        "title": "Indeed Job Search Scraper with Salary & Benefits Data Output",
        "description": "One record per Indeed job listing, with title, company, salary, benefits, remote-work status, full description and apply links.",
        "type": "object",
        "properties": {
          "jobs": {
            "type": "string",
            "title": "Job listings",
            "description": "Dataset containing all scraped Indeed job listings.",
            "template": "{{links.apiDefaultDatasetUrl}}/items"
          }
        }
      },
      "dockerfile": "../Dockerfile",
      "storages": {
        "dataset": {
          "actorSpecification": 1,
          "title": "Job Listings",
          "views": {
            "overview": {
              "title": "Jobs",
              "transformation": {
                "fields": [
                  "jobTitle",
                  "company",
                  "location",
                  "salaryText",
                  "salarySource",
                  "workplaceType",
                  "companyRating",
                  "datePosted",
                  "applyUrl",
                  "jobUrl"
                ]
              },
              "display": {
                "component": "table",
                "properties": {
                  "jobTitle": {
                    "label": "Job Title",
                    "format": "text"
                  },
                  "company": {
                    "label": "Company",
                    "format": "text"
                  },
                  "location": {
                    "label": "Location",
                    "format": "text"
                  },
                  "salaryText": {
                    "label": "Salary",
                    "format": "text"
                  },
                  "salarySource": {
                    "label": "Salary Source",
                    "format": "text"
                  },
                  "workplaceType": {
                    "label": "Workplace",
                    "format": "text"
                  },
                  "companyRating": {
                    "label": "Rating",
                    "format": "number"
                  },
                  "datePosted": {
                    "label": "Posted",
                    "format": "text"
                  },
                  "applyUrl": {
                    "label": "Apply URL",
                    "format": "link"
                  },
                  "jobUrl": {
                    "label": "URL",
                    "format": "link"
                  }
                }
              }
            }
          }
        }
      },
      "readme": "# Indeed Job Search Scraper with Salary & Benefits Data\n\nTurn any Indeed job search into a structured, analysis-ready dataset. Give it keywords, a location and optional filters — or paste search, company or single-job URLs — and receive each posting with its full description, salary range and pay period, benefits, remote-work model, employer details and the link candidates actually apply through. No Indeed account, cookie or API key required.\n\n## What this actor does\n\n- **Search 62 country sites** by keyword and location, with filters for date posted, job type, workplace, experience, education, Easy Apply and minimum salary\n- **Paste Indeed URLs** — filtered search links, company job pages (`/cmp/<company>/jobs`) and individual job links are all understood, and filters in a URL are honored\n- **Full descriptions, not teasers** — every listing carries the complete posting text, with optional HTML\n- **Structured compensation** — minimum, maximum, period, currency, annualized figures, and whether the range is the employer's own\n- **Employer and application data** — company size, revenue, industry, CEO and website when Indeed holds them, plus the external application link for off-site applications\n- **Beyond Indeed's search ceiling** — Indeed stops each query at roughly 600–900 unique jobs; the actor automatically splits the search into date windows and merges them, returning the full set Indeed's index holds for your query\n- **Optional employer depth** — add sub-ratings, Work-Wellbeing, CEO details, salary-by-title reports and full review pages for each hiring company\n- **Clean records** — duplicates across searches are removed by job key, and fields Indeed has no value for are left out of the record instead of being padded with blanks\n\n## Output per job\n\nIdentity\n\n- `jobKey` — Indeed's stable job identifier\n- `jobTitle`, `normalizedTitle` — title as published and Indeed's normalized form\n- `company`, `companyId`, `companyUrl`, `companyLogo`\n- `source`, `language`\n\nLocation\n\n- `location` — formatted location as Indeed shows it\n- `city`, `state`, `stateName`, `county`, `postalCode`, `streetAddress`, `neighborhood`\n- `countryCode`, `countryName`\n- `latitude`, `longitude`\n\nCompensation\n\n- `salaryText` — salary as displayed\n- `salaryMin`, `salaryMax`, `salaryType`, `salaryCurrency`\n- `salarySource` — `EMPLOYER` for the employer's own range, `INDEED_ESTIMATE` when Indeed's estimate is used\n- `salaryAnnualMin`, `salaryAnnualMax` — hourly, daily, weekly and monthly pay converted to a yearly figure\n\nClassification\n\n- `jobTypes` (JSON string) and `jobTypesList` (array) — employment types\n- `benefits` (JSON string) and `benefitsList` (array) — listed benefits\n- `employmentType`, `schedules`, `payTypes`\n- `workplaceType` — Remote / Hybrid / In-person / Office\n- `remoteWork` — Indeed's raw model value (`REMOTE_ALWAYS`, `REMOTE_HYBRID`, `ON_SITE`)\n- `experienceLevel`, `educationLevels`, `attributes`, `occupations`\n\nDescription and dates\n\n- `description`, `descriptionHtml` (when requested), `snippet`\n- `datePosted`, `datePublished` — ISO 8601 timestamps\n- `validThrough`, `isExpired`, `postedTime`\n\nApplication\n\n- `indeedApply` — accepts Indeed's one-click application\n- `applyUrl` — the employer's own application link, when it differs from Indeed\n- `urgentlyHiring`, `highVolumeHiring`\n\nCompany profile (when Indeed holds it)\n\n- `companyDescription`, `companySize`, `companyRevenue`, `companyIndustry`\n- `companyCeo` (the dossier name), `companyHeadquarters`\n- `companyRating`, `companyReviewCount` — from Indeed's data; the optional ratings lookup adds:\n  - `companyRatings` — work-life balance, pay and benefits, job security, management, culture\n  - `companyRatingTrend` — yearly rating history\n  - `companyWorkWellbeing` — Indeed's Work-Wellbeing score with its sub-scores\n  - `companyCeoName`, `companyCeoPhotoUrl`, `companyCeoApproval`, `companyFounded`\n  - `companySalaries` — average pay by job title (what Indeed reports)\n  - `companyReviewSnippets` — up to five recent review excerpts\n- `companyReviews` — up to 20 full first-page reviews with pros/cons and sub-ratings, plus `companyReviewsFound` and `companyReviewsTotal` (reviews toggle)\n- `companySalaryTotal` and `companySalarySatisfaction` — salary reports count and satisfaction ratio (salaries toggle)\n\nContacts (optional)\n\n- `emails`, `phoneNumbers` — patterns written in the posting's own description text; not an Indeed contact field\n\nProvenance\n\n- `searchQuery`, `searchLocation`, `country`\n- `recordType`, `scrapeTimestamp`\n\nSample record:\n\n```json\n{\n  \"jobKey\": \"2f2c680351b7c737\",\n  \"jobTitle\": \"Senior Software Engineer (AI Products)\",\n  \"company\": \"Brillian\",\n  \"companyUrl\": \"https://www.indeed.com/cmp/Brillian\",\n  \"location\": \"New York, NY\",\n  \"city\": \"New York\",\n  \"state\": \"NY\",\n  \"countryCode\": \"US\",\n  \"latitude\": 40.71427,\n  \"longitude\": -74.00597,\n  \"salaryText\": \"$200,000 - $240,000 a year\",\n  \"salaryMin\": 200000,\n  \"salaryMax\": 240000,\n  \"salaryType\": \"YEARLY\",\n  \"salaryCurrency\": \"USD\",\n  \"salarySource\": \"EMPLOYER\",\n  \"salaryAnnualMin\": 200000,\n  \"salaryAnnualMax\": 240000,\n  \"jobTypesList\": [\"Full-time\"],\n  \"benefitsList\": [\"Health insurance\", \"Dental insurance\", \"401(k)\", \"Vision insurance\"],\n  \"workplaceType\": \"Hybrid\",\n  \"experienceLevel\": \"Senior level\",\n  \"description\": \"About Our Company …\",\n  \"datePosted\": \"2026-06-10T14:24:55Z\",\n  \"applyUrl\": \"https://ats.example.com/careers/job/12345\",\n  \"jobUrl\": \"https://www.indeed.com/viewjob?jk=2f2c680351b7c737\",\n  \"recordType\": \"job\",\n  \"scrapeTimestamp\": \"2026-10-17T08:16:48Z\"\n}\n```\n\n## Input\n\n| Field | Type | Default | Description |\n|---|---|---|---|\n| `searchQueries` | array | – | Job searches. Put a location after \" in \": `data analyst in Austin, TX`. A query without \" in \" uses `location`, or searches the whole country |\n| `startUrls` | array | – | Indeed URLs: filtered searches, `https://www.indeed.com/cmp/Google/jobs`, or job links with `jk=` |\n| `country` | string | `US` | Indeed country site to search (62 available). Salaries come back in that country's currency and job links point to the matching site; URL tasks from other country sites work too |\n| `location` | string | – | City, region or postal code for searches that don't name one. Ignored for remote-only searches |\n| `radius` | integer | `25` | Search distance from the location (0–500) |\n| `radiusUnit` | string | `miles` | `miles` or `kilometers` |\n| `sort` | string | `relevance` | `relevance` or `date` (newest first) |\n| `datePosted` | string | – | Only jobs posted within 1, 3, 7, 14 or 30 days |\n| `jobType` | string | – | Full-time, part-time, contract, temporary, internship, permanent, seasonal, per diem, freelance, apprenticeship or volunteer |\n| `workplaceType` | string | – | `remote`, `hybrid` or `inPerson` |\n| `experienceLevel` | string | – | `noExperience`, `entry`, `mid` or `senior` |\n| `educationLevel` | string | – | `noDegree`, `highSchool`, `associate`, `bachelor`, `master` or `doctoral` |\n| `easyApplyOnly` | boolean | `false` | Only jobs accepting Indeed's one-click application |\n| `salaryMin` | integer | – | Only jobs paying at least this much per year, comparing annualized pay. Jobs with no stated salary are kept |\n| `maxItems` | integer | `50` | Overall cap across all searches (1–10000) |\n| `maxItemsPerSearch` | integer | – | Cap per search query or URL; defaults to `maxItems` |\n| `includeDescriptionHtml` | boolean | `false` | Also save each description as HTML |\n| `includeCompanyRatings` | boolean | `false` | Look up employer ratings plus sub-ratings, wellbeing, CEO details, salary-by-title reports and review snippets for each unique hiring company |\n| `includeContacts` | boolean | `false` | Extract emails and phone numbers written in the posting description |\n| `includeCompanyReviews` | boolean | `false` | Also fetch the first page of each employer's reviews: up to 20 full reviews (one extra request per company) |\n| `includeCompanySalaries` | boolean | `false` | Also fetch each employer's salaries page: total report count, satisfaction and the broader title list (one extra request per company) |\n| `expandBeyondCeiling` | boolean | `true` | Bypass Indeed's ~600–900-result search ceiling by splitting the search's date range into windows and merging the slices; narrow searches are unaffected |\n\nAt least one search query or URL is needed — or a filter plus a country.\n\n### Example: recent remote roles\n\n```json\n{\n  \"searchQueries\": [\"customer success manager\"],\n  \"country\": \"US\",\n  \"workplaceType\": \"remote\",\n  \"datePosted\": \"7\",\n  \"maxItems\": 200\n}\n```\n\n### Example: salaries in Germany\n\n```json\n{\n  \"searchQueries\": [\"Softwareentwickler in Berlin\"],\n  \"country\": \"DE\",\n  \"salaryMin\": 70000,\n  \"maxItems\": 100\n}\n```\n\n### Example: a filtered URL and a company page\n\n```json\n{\n  \"startUrls\": [\n    \"https://www.indeed.com/jobs?q=nurse&l=Chicago%2C+IL&sc=0kf%3Ajt%28fulltime%29%3B&fromage=7\",\n    \"https://www.indeed.com/cmp/Amazon/jobs\"\n  ],\n  \"maxItems\": 300\n}\n```\n\n### Example: fetch specific job links\n\n```json\n{\n  \"startUrls\": [\n    \"https://www.indeed.com/viewjob?jk=2f2c680351b7c737\",\n    \"7d7746167b22c122\"\n  ],\n  \"includeDescriptionHtml\": true\n}\n```\n\n## Use cases\n\n- **Salary benchmarking** — build numeric pay ranges by title, city and country, with annualized values ready to chart\n- **Remote-work research** — measure how much of a role is remote, hybrid or on-site\n- **Recruiting intelligence** — track which employers are hiring for a skill, where, and at what pay\n- **Job-board operators** — republish fresh listings with company and benefit data on your own board\n- **Labour-market studies** — analyse posting volumes by date window, experience level and education\n- **Lead generation** — companies hiring for a role are buying related services; export them with websites and locations\n\n## FAQ\n\n### Do I need an Indeed account or API key?\n\nNo. The actor reads Indeed's publicly available job data without any login, cookie or key.\n\n### How many jobs can one search return?\n\nIndeed's own ranking ends one query after roughly 600–900 unique jobs. With `expandBeyondCeiling` on (the default), the actor splits the search into date windows and merges them: a live test returned 2,599 unique jobs for a query whose single pass stopped at 861. It stops at the size of Indeed's app index for your query — which can be smaller than Indeed's web page count — and older than two years is not covered. Narrow searches (fewer than ~750 results) are handled in a single pass. A job found by more than one search or window is saved once — every posting has one `jobKey`.\n\n### Why is the applicant count missing?\n\nIndeed does not expose applicant numbers through its public job data; the only counter is an internal tracking value on its web search page without the displayed meaning. The actor therefore does not ship an applicant field. Posting age (`datePosted`, `postedTime`) is included.\n\n### Why do email/phone fields only appear sometimes?\n\nThey are extracted from text employers wrote in the posting, because Indeed's job data does not carry recruiter contacts. About one posting in nine includes an email. Enable `includeContacts` to add them.\n\n### Why do Indeed links return 403 to my link checker?\n\nIndeed protects its own pages with Cloudflare bot management. `jobUrl` and `companyUrl` open normally in a browser, but a clean command-line request or a datacenter connection receives 403 — sometimes a login redirect — and that is expected, not a broken URL. From an ordinary residential browser session Indeed's `/job/` pages and its apply redirects do open. `applyUrl` points directly at the employer's own application page whenever they apply off-site; those links are served raw and are machine-reachable, though a small share are dead because the employer removed the posting.\n\n### Why is the salary missing on some jobs?\n\nMany employers simply do not publish pay. Those listings have no salary fields rather than a guessed number. Indeed's own estimated pay is rendered only on its login-gated pages, so the actor ships the employer's stated salary and never substitutes an estimate; `salarySource` is `EMPLOYER` whenever a range exists.\n\n### Why do some company fields look empty?\n\nIndeed only holds company profiles for employers that maintain one. Fields like revenue, CEO or founded year are omitted when Indeed has no value, instead of being sent as blanks.\n\n### What is the difference between `indeedApply` and `applyUrl`?\n\n`indeedApply: true` means the posting accepts Indeed's one-click application. `applyUrl` is the employer's own application page — an ATS or career site — which is what you follow for off-site applications.\n\n### Will the actor get blocked?\n\nThe actor reads Indeed data through the same interface Indeed's own mobile app uses, and picks a working connection automatically. If a search cannot be loaded at all, the run says so in its status message rather than returning empty records silently.\n\n### Is this affiliated with Indeed?\n\nNo. This is an independent, third-party actor that reads Indeed's public job data; it is not operated by or affiliated with Indeed.\n"
    },
    "buildNumber": "1.0.4",
    "imageDigest": "616e72068839c5ff61e53630e8e0a039872497ff0ff8e3f562b85d86e3c6e411",
    "actVersion": {
      "sourceType": "SOURCE_FILES",
      "buildTag": "latest",
      "versionNumber": "1.0"
    },
    "usage": {
      "ACTOR_COMPUTE_UNITS": 0.030726666666666666
    }
  }
}