TimesJobs APItimesjobs.com ↗
Search and retrieve job listings, company data, categories, roles, and facets from TimesJobs.com via a structured REST API.
What is the TimesJobs API?
The TimesJobs API exposes 6 endpoints covering job search, full job details, category breakdowns, popular roles, featured companies, and search facets from TimesJobs.com. Use search_jobs to query listings by keyword, location, and experience level, then pass the returned jobId to get_job_detail for HTML job descriptions, required skills, employment type, and application links — all in structured JSON.
curl -X GET 'https://api.parse.bot/scraper/0053796a-6939-498b-aa1e-50a128c767e4/search_jobs?page=1&size=5&keyword=python&location=bangalore&experience=3' \ -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 timesjobs-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.timesjobs_api import TimesJobs, Job, JobDetail, Category, Role, Company, Filter, Facet
client = TimesJobs(api_key="YOUR_API_KEY")
# Search for Python jobs in Bangalore
for job in client.jobs.search(keyword="python", location="bangalore", size=5, limit=10):
print(job.title, job.company, job.location, job.experience_from, job.experience_to)
# Get full details for a specific job
for j in client.jobs.search(keyword="python", limit=1):
full = j.detail.get()
print(full.title, full.company_name, full.employment_type, full.posted_at, full.min_experience)
# List job categories
for category in client.categories.list():
print(category.name, category.count)
# List popular roles
for role in client.roles.list():
print(role.name, role.count)
# List featured companies
for company in client.companies.list():
print(company.name, company.count, company.logo)
# Get facets for a search query
facets = client.filters.get(keyword="java", location="mumbai")
for facet in facets.job_function:
print(facet.value, facet.count)
Full-text search over job listings by keyword, location, and experience level. Returns paginated results with job summaries including title, company, location, skills, salary range, and posting dates. Each job carries a jobId usable with get_job_detail for the full listing. Paginates via integer page counter; server default is 10 results per page.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number for pagination. |
| size | integer | Number of results per page. |
| keyword | string | Search keyword (e.g. 'python', 'java developer'). Omitting returns all jobs. |
| location | string | Location filter (e.g. 'bangalore', 'mumbai'). Omitting returns jobs from all locations. |
| experience | string | Minimum years of experience filter (e.g. '3'). Omitting returns jobs for all experience levels. |
{
"type": "object",
"fields": {
"jobs": "array of job summary objects with title, company, location, skills, jobId, postDate, expiryDate, experienceFrom, experienceTo, lowSalary, highSalary, jobType, jobFunction, description, companyLogo, jobDetailUrl",
"page": "integer, current page number",
"size": "integer, results per page",
"total": "integer, total matching jobs",
"totalPages": "number, total pages available"
},
"sample": {
"data": {
"jobs": [
{
"jobId": "80570471",
"title": "Engineer II DFT",
"skills": "DFT Implementation, ATPG Methodology, Python Automation",
"company": "Microchip",
"jobType": "On-site",
"location": "Bengaluru",
"postDate": "2026-06-10",
"lowSalary": -1,
"expiryDate": "2026-08-08",
"highSalary": -1,
"companyLogo": "https://timesjob.s3.ap-south-1.amazonaws.com/company-logos/company-default-logo.svg",
"description": "Are You Looking For A Unique Opportunity...",
"jobFunction": "IT Software : Software Products & Services",
"experienceTo": 5,
"jobDetailUrl": "https://www.timesjobs.com/job-detail/engineer-ii-dft-microchip-bengaluru-2-5-years-jobid-ktmRS4xGbnhzpSvf+uAgZw==&source=srp",
"experienceFrom": 2
}
],
"page": 1,
"size": 10,
"total": 3318,
"totalPages": 332
},
"status": "success"
}
}About the TimesJobs API
Search and Job Detail
search_jobs accepts up to five parameters — keyword, location, experience, page, and size — and returns paginated job summaries. Each summary includes title, companyName, locationNames, skills, jobId, postDate, expiryDate, and experience range fields (experienceFrom, experienceTo). The total and totalPages fields let you walk the full result set. Passing a jobId to get_job_detail returns the complete listing: an HTML description, comma-separated skills, jobType (e.g. On-site), ISO postedAt and expiresAt timestamps, maxExperience, and direct application metadata.
Discovery Endpoints
get_job_categories returns functional areas — Freshers, IT, Sales & Marketing, HR, Banking & Finance, and others — each with a live count of current openings, a logo, and a deep-link url. get_popular_roles surfaces roles like Java Developer, Data Engineer, and Project Manager with their current job counts. get_featured_companies lists actively hiring employers (nVIDIA, Adobe, Mastercard) alongside company logos and per-company job counts.
Faceted Filtering
get_facets takes an optional keyword and location and returns four facet arrays: Location, Jobfunction, IndustryValue, and ExperienceCode. Each facet item carries a value label and a count, giving you the distribution of matching jobs across dimensions before running a full search. This is useful for populating filter dropdowns or validating that a query will return results before committing to pagination.
Data Shape Notes
Job descriptions in get_job_detail are returned as HTML strings in the description field, so consumers need to strip or render markup depending on their use case. Experience filters in search_jobs accept a minimum years string (e.g. '3'); the range is expressed in the response as separate experienceFrom and experienceTo fields. Omitting any optional parameter broadens the query — omitting keyword returns all jobs, omitting location spans all geographies.
The TimesJobs API is a managed, monitored endpoint for timesjobs.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when timesjobs.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 timesjobs.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 India-focused job listings by tech stack using the
keywordparam insearch_jobs - Build a job alert system by polling
search_jobswith specific keywords and comparingpostDatefields - Populate a filter UI with available locations, job functions, and experience bands using
get_facets - Surface featured hiring companies and their open-role counts via
get_featured_companiesfor a recruitment dashboard - Map demand for specific roles (e.g. Data Engineer, Project Manager) over time using
get_popular_rolescounts - Render full job descriptions with skills and expiry dates by chaining
search_jobsandget_job_detail - Segment job supply by industry or functional area using the
IndustryValueandJobfunctionfacets
| 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 TimesJobs have an official developer API?+
What does `get_job_detail` return beyond what `search_jobs` includes?+
get_job_detail adds fields not present in search summaries: an HTML-formatted description, jobType (e.g. On-site), ISO postedAt and expiresAt timestamps, and maxExperience. The skills field in the detail response is a comma-separated string, whereas search results may surface it differently. You need a jobId from search_jobs to call this endpoint.Can I filter `search_jobs` by both minimum and maximum experience?+
experience parameter accepts a minimum years value only (e.g. '3'). The response includes both experienceFrom and experienceTo fields per listing, but the API does not currently expose a maximum experience filter input. You can fork this API on Parse and revise it to add a maximum experience filter parameter.Does the API return salary data for job listings?+
search_jobs response includes a salary range field (low is referenced in the returns), but full structured salary data — such as currency, exact range, or compensation type — is not consistently exposed across all listings. TimesJobs often leaves salary fields unpopulated when employers don't disclose compensation. You can fork this API on Parse and revise it to surface additional salary fields if the source data is present.Is job data limited to India, or does it include international listings?+
location parameter in search_jobs and get_facets supports Indian city names (e.g. 'bangalore', 'mumbai'). International roles may appear occasionally but are not the primary coverage scope of the source.