Indeed APIin.indeed.com ↗
Access Indeed India job listings, company profiles, salary data, and job details via 6 structured API endpoints. Filter by keyword, location, and company.
What is the Indeed API?
The Indeed India API provides access to 6 endpoints covering job search, full job details, company profiles, company-specific job listings, and salary market data from in.indeed.com. The search_jobs endpoint returns paginated results with 15 jobs per page, each including job key, title, company, location, salary, and direct apply URL. Salary lookups break down median and mean values across hourly, daily, weekly, monthly, and yearly pay periods.
curl -X GET 'https://api.parse.bot/scraper/73db4981-2614-4913-b668-a8b894e60c23/search_jobs?query=software+engineer&start=0&location=India' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace in-indeed-com-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
from parse_apis.indeed_india_api import IndeedIndia, JobSummary, Job, Company, CompanyProfile, Salary
client = IndeedIndia()
# Search for Python developer jobs in Bengaluru
for job_summary in client.jobsummaries.search(query="Python Developer", location="Bengaluru"):
print(job_summary.title, job_summary.company, job_summary.location, job_summary.posted_at)
# Navigate from summary to full job details
job = job_summary.details()
print(job.description_html, job.posted_date, job.apply_link)
break
# Look up salary data for a role
salary = client.salaries.lookup(job_title="React Developer")
print(salary.title, salary.location)
for city in salary.top_cities:
print(city.name, city.median)
# Search companies and explore their profile and jobs
for company in client.companies.search(query="Wipro"):
print(company.name, company.rating, company.industry)
# Get detailed company profile
profile = company.profile.get()
print(profile.ceo_name, profile.headquarters, profile.founded, profile.website)
# List jobs at this company
for company_job in company.jobs.list():
print(company_job.title, company_job.location, company_job.salary)
break
Search for job listings on Indeed India by keyword and location. Returns paginated results with 15 jobs per page. Pagination offset increments by 10. Each job includes a job_key usable with get_job_details for full information.
| Param | Type | Description |
|---|---|---|
| queryrequired | string | Job title, keywords, or company name to search for |
| start | integer | Pagination offset (increments by 10) |
| location | string | Location filter (city, state, or country) |
{
"type": "object",
"fields": {
"jobs": "array of job listing objects with job_key, title, company, location, salary, posted_at, job_url",
"start": "integer, current pagination offset",
"total_results": "integer or null, total number of matching jobs"
},
"sample": {
"data": {
"jobs": [
{
"title": "Python Developer",
"salary": null,
"company": "Infosys Limited",
"job_key": "b71232b2c25ed4e2",
"job_url": "https://in.indeed.com/viewjob?jk=b71232b2c25ed4e2",
"location": "Bengaluru, Karnataka",
"posted_at": "15 days ago"
}
],
"start": 0,
"total_results": null
},
"status": "success"
}
}About the Indeed API
Job Search and Details
The search_jobs endpoint accepts a query string (job title, keywords, or company name) plus optional location and start parameters for pagination. Each result in the jobs array includes a job_key identifier, title, company, location, salary (when listed), posted_at, and job_url. Pass the job_key to get_job_details to retrieve the full job posting: description_html containing the complete job description, apply_link, posted_date in ISO 8601 format, and salary if the employer disclosed it.
Company Profiles and Job Counts
search_companies takes a company query and returns matching profiles including name, rating, review_count, industry, and company_url_name. The company_url_name slug feeds into both get_company_profile and get_company_jobs. The profile endpoint returns fields like ceo_name, founded, revenue, headquarters, website, and logo_url. The jobs endpoint returns a total_job_count integer alongside an array of active listings for that company, each with job_key, title, location, and salary.
Salary Market Data
get_salary_info accepts a job_title string and returns an averages object with five pay-period keys: HOURLY, DAILY, WEEKLY, MONTHLY, and YEARLY. Each key contains median and mean values. The response also includes top_cities, an array of city objects with name and a median monthly salary, scoped to India. This is useful for benchmarking compensation across roles and geographies without needing to visit individual job listings.
The Indeed API is a managed, monitored endpoint for in.indeed.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when in.indeed.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official in.indeed.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Aggregate software engineering job listings from Indeed India filtered by city using
search_jobswith thelocationparameter. - Pull full job descriptions via
get_job_detailsto parse required skills and qualifications for a candidate-matching tool. - Compare median yearly salaries across job titles using
get_salary_infoto build a compensation benchmarking dashboard. - Track a company's active headcount by polling
get_company_jobsand monitoring thetotal_job_countfield over time. - Enrich a company directory with CEO name, headquarters, founding year, and industry from
get_company_profile. - Identify top-paying cities for a given role using the
top_citiesarray fromget_salary_info. - Build a recruiter tool that cross-references
search_companiesratings and review counts before targeting outreach.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Indeed have an official developer API?+
What does `get_job_details` return beyond what `search_jobs` already provides?+
search_jobs returns a summary row per job: title, company, location, salary snippet, and posted_at. get_job_details adds the full description_html field with the complete job posting text, an apply_link URL, and posted_date in ISO 8601 format. The source field also distinguishes the posting source from the hiring company, which can differ on aggregated listings.Does the API cover job listings outside India?+
Does `search_jobs` support filtering by salary range, job type, or date posted?+
query, location, and start for pagination. Filters for salary range, job type (full-time, contract, etc.), or recency are not exposed as input parameters. You can fork the API on Parse and revise it to add those filter parameters.What is the pagination behavior for `search_jobs`?+
start parameter is the pagination offset and increments by 10 per page in Indeed's standard URL pattern. The response includes a total_results integer (or null if unavailable) so you can calculate how many pages exist for a given query.