shine.com APIshine.com ↗
Access job listings, full job details, categories, and locations from Shine.com. Search by keyword, location, experience, salary, and industry via 5 endpoints.
curl -X GET 'https://api.parse.bot/scraper/708d58be-f465-47b4-be6b-7f4bd198d190/search_jobs?page=1&query=data+analyst&location=Delhi' \ -H 'X-API-Key: $PARSE_API_KEY'
Search for job listings on Shine.com by keyword, location, experience, salary, industry, or company. Returns paginated results with 20 jobs per page.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number for pagination. |
| query | string | Search keyword (e.g. 'Python Developer', 'data analyst'). Converted to URL slug format internally. |
| salary | string | Minimum salary ID filter. |
| company | string | Company name to filter by (e.g. 'Capgemini'). Overrides query when provided. |
| industry | string | Industry ID from get_job_categories (e.g. '18' for IT Services & Consulting, '6' for BFSI). |
| location | string | Location name to filter by (e.g. 'Bangalore', 'Delhi', 'Hyderabad'). |
| experience | string | Minimum experience in years as a numeric string (e.g. '2', '4'). Acts as approximate threshold. |
{
"type": "object",
"fields": {
"jobs": "array of job listing objects with job_id, title, company, location, experience, salary, posted_date, slug, job_url, snippet",
"total_count": "integer total number of matching jobs",
"total_pages": "integer total pages available",
"current_page": "integer current page number"
},
"sample": {
"data": {
"jobs": [
{
"slug": "python-developers/eclerx-services-limited/18797013",
"title": "Python Developers",
"job_id": "18797013",
"salary": "[Salary Hidden]",
"company": "G-Jobs Hiring For eClerx Services Limited",
"job_url": "https://www.shine.com/jobs/python-developers/eclerx-services-limited/18797013",
"snippet": "As a skilled and motivated Python Developer...",
"location": [
"All India"
],
"experience": "4 to 8 Yrs",
"posted_date": "2026-03-22T23:44:52"
}
],
"total_count": 1500,
"total_pages": 75,
"current_page": 1
},
"status": "success"
}
}About the shine.com API
The Shine.com API provides access to job listings and recruiting data across India through 5 endpoints. The search_jobs endpoint accepts filters including keyword, location, experience, salary, and industry to return paginated results of 20 jobs per page, each with fields like job_id, company, salary, snippet, and job_url. Companion endpoints cover full job details, industry categories, location lists, and trending searches.
Searching Jobs
The search_jobs endpoint is the primary entry point. It accepts optional parameters including query (a keyword such as 'Python Developer'), location (e.g. 'Bangalore' or 'Hyderabad'), experience (minimum years as a numeric string), salary (a minimum salary ID), industry (a numeric ID from get_job_categories), and company (overrides query when both are provided). Results come back 20 per page with total_count, total_pages, and current_page fields to drive pagination.
Job Details and Metadata
get_job_details accepts a job_slug from search results and returns the complete listing: title, salary, skills (an array of objects keyed by skill name with a required-indicator boolean), location (array of strings), experience, description, industry, job_type, and job_id. If the listing has expired or been removed, the response returns a stale_input object with kind 'input_not_found' rather than throwing an error.
Taxonomy and Discovery Endpoints
get_job_categories returns all available industry/functional categories with their current id, name, and live job count. Those IDs feed directly into the industry filter on search_jobs. get_locations_list provides the equivalent for geographies. get_top_searches returns currently trending search terms and links on Shine.com, including work-from-home and location-specific searches, each with name, url, new_icon, and visibility fields — useful for surfacing what candidates are actively looking for.
- Aggregate Indian tech job listings by filtering
search_jobson industry ID '18' (IT Services & Consulting) and specific city names - Build a job alert service by polling
search_jobswith a keyword and experience threshold, then fetching full descriptions viaget_job_details - Populate a company-focused job board by passing a company name to the
companyparameter insearch_jobs - Display required vs. optional skill breakdowns for a role using the boolean indicator in the
skillsarray fromget_job_details - Render a location-aware job directory by combining
get_locations_listjob counts with live search results - Surface trending job categories and work-from-home opportunities using the
searchesarray fromget_top_searches - Map salary distribution across experience levels by combining the
salaryandexperiencefields returned insearch_jobsresults
| 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 | 250 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 Shine.com have an official public developer API?+
What does `get_job_details` return for an expired job listing?+
get_job_details returns a stale_input object with kind set to 'input_not_found' instead of returning job fields. This lets your code distinguish a dead listing from a network error without parsing an exception.How do industry IDs work across the search and category endpoints?+
get_job_categories returns each category with an id, name, and current job count. You pass that id as the industry parameter in search_jobs — for example, '18' for IT Services & Consulting or '6' for BFSI. Because counts come from live data, they reflect the current number of indexed listings in that category.Does the API expose candidate profiles, resumes, or application data?+
Can I retrieve jobs posted within a specific date range?+
search_jobs endpoint does not currently accept a date-range filter. Each result includes a posted_date field, so you can filter results client-side after fetching. For finer server-side date filtering, you can fork the API on Parse and revise it to add that parameter.