Indeed connector

Indeed Scraper API for Job Postings and Hiring Data

The SurfSense Indeed API extracts public job postings, salaries, companies, and full descriptions by search query, company page, or job URL, without Indeed's official API. Give your AI agents a live feed of who is hiring, for what, at what pay, so you track the labor market as it moves.

agent · surfsense

$

indeed.scrape({ search_queries: ["data analyst"], location: "Remote",
  remote: "remote", from_days: 7, sort: "date", max_items: 30 })
  • Senior Data Analyst · Acme CorpRemote (US) · $120k–$145k/year · posted 2 days agosalary listed
  • Data Analyst, Growth · GlobexRemote · $95k–$110k/year · Indeed Applybuying signal
  • Marketing Data Analyst · InitechRemote (US) · estimated $88k–$102k · posted todaynew today

30 jobs · 22 with salary · surfaced in 3.4s

What you can extract from Indeed

Every call returns structured job items. Point the API at a search query, an Indeed search or company page, or a single job URL, and set scrape_job_details for the full description per job.

Job

Title, job key, listing URL, apply URL, and whether Indeed Apply is enabled.

Company

Company name, profile URL, star rating, and review count where available.

Location

Formatted location, city, state, postal code, country, and remote or hybrid flags.

Salary

Pay text, min and max bounds, currency, period, and whether the figure is an Indeed estimate.

Description

Listing snippet by default; the full text and HTML description with scrape_job_details.

Signals

Job types, benefits, sponsored, urgently hiring, new, and expired flags, plus post age.

What teams do with the Indeed API

Competitor hiring intelligence

Track what your competitors are hiring for and where. A spike in sales or ML roles is a roadmap signal months before it ships. Feed the stream to an agent that flags the moves that matter.

Salary and compensation benchmarking

Pull real posted salaries for a title in a location and benchmark your own bands against the live market, instead of a survey that is a year stale.

Labor market and sector research

Measure hiring demand for a role, skill, or sector over time. Turn thousands of postings into a demand index your analysts and clients can act on.

Recruiting and lead sourcing

Find companies actively hiring for a role and reach them while the need is hot. Job postings are a public, timely buying signal for staffing and B2B sales.

Call it from your code or your agent

One typed endpoint, one API key. Or add the SurfSense MCP server and let your agent call indeed.scrape as a native tool.

curl -X POST "$SURFSENSE_API_URL/workspaces/$WORKSPACE_ID/scrapers/indeed/scrape" \
  -H "Authorization: Bearer $SURFSENSE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "search_queries": [
      "data analyst"
    ],
    "location": "Remote",
    "remote": "remote",
    "from_days": 7,
    "sort": "date",
    "max_items": 30
  }'

Indeed API request and response schema

The exact contract behind POST /workspaces/{workspace_id}/scrapers/indeed/scrape. The same fields power the indeed.scrape MCP tool.

Request parameters

Provide at least one source: urls or search_queries. Up to 20 sources per call.

Request parameters
FieldTypeDescription
urlsstring[]
default []
Indeed URLs: a search page (/jobs?q=&l=), a company jobs page (/cmp/<slug>/jobs), or a single job (/viewjob?jk=...). Max 20.
search_queriesstring[]
default []
Job search terms. Each returns up to max_items_per_query results, shaped by the filters below. Max 20.
countrystring
default "us"
Country code selecting the Indeed domain, e.g. 'us', 'gb', 'de'.
locationstringWhere to search, e.g. 'Remote', 'New York, NY'.
radiusintegerSearch radius in miles or km around location.
job_typestringEmployment type: fulltime, parttime, contract, internship, and more.
levelstringExperience level: entry_level, mid_level, or senior_level.
remotestringWork model filter: remote or hybrid.
from_daysintegerOnly return jobs posted within the last N days.
sortstring
default "relevance"
Result ordering: relevance or date.
scrape_job_detailsboolean
default false
Fetch each job's detail page for the full description. Slower: one extra page load per job.
max_itemsinteger
default 25
Max total jobs to return across all sources. 1 to 100.
max_items_per_queryinteger
default 25
Max jobs to pull per search or company target.

Response fields

The response is { items: [...] } with one flat item per job. Fields Indeed omits are null. One returned job is one billable unit.

Response fields
FieldTypeDescription
jobKey / jobUrl / applyUrlstringIndeed job key, listing URL, and third-party apply URL.
titlestringThe job title as posted.
company / companyUrlstringCompany name and its Indeed profile URL.
companyRating / companyReviewCountnumber / integerEmployer star rating and number of reviews, where Indeed shows them.
formattedLocation / isRemote / remoteTypestring / booleanLocation string plus remote and hybrid flags.
salaryobjectsalaryText, salaryMin, salaryMax, currency, period, and isEstimated when the pay is an Indeed estimate.
jobTypes / benefitsstring[]Employment types and listed benefits parsed from the posting.
descriptionText / descriptionHtmlstringSnippet by default; the full description when scrape_job_details is set.
sponsored / urgentlyHiring / isNew / expiredbooleanListing flags for ranking and filtering.
age / datePublished / scrapedAtstringRelative post age, ISO publish date, and when the job was scraped.

An Indeed API alternative built for agents

Indeed retired its public Publisher jobs API and gates data behind partner programs. If you cannot get access or need clean structured jobs now, here is how SurfSense compares.

FeatureDIY Indeed scrapingSurfSense
AccessPublisher API retired; partner-gated and approval-onlyOne API key; scrape public postings without an approval process
Anti-botYou fight Cloudflare, fingerprinting, and CAPTCHAs yourselfWarmed, rotated sessions managed for you; no proxy plumbing
PricingProxy, browser, and maintenance costs you ownPay per job returned, with a free tier to start
DescriptionsExtra page fetch and parsing you build and maintainFull description per job with one scrape_job_details flag
Agent-readyNo; you build the harness yourselfMCP server exposes indeed.scrape as a native tool

Indeed API: frequently asked questions

Point your agents at Indeed

The Indeed connector is one of many in the SurfSense open web research platform. Start free, no credit card required.

SurfSense