Shine APIshine.com ↗
Access Shine.com job listings, details, categories, and locations via API. Search by keyword, location, experience, salary, and industry across India's job market.
What is the Shine API?
The Shine.com API exposes 5 endpoints covering job search, full job details, industry categories, location data, and trending searches from one of India's largest job portals. Use search_jobs to query across keyword, location, experience, salary, and industry filters, then call get_job_details with a job slug to retrieve the complete listing including skills, description, and salary range.
curl -X GET 'https://api.parse.bot/scraper/708d58be-f465-47b4-be6b-7f4bd198d190/search_jobs?page=1&query=Python+Developer&location=Delhi' \ -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 shine-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.shine.com_job_search_api import Shine, Job, JobDetail, Category, Location, TopSearch, JobNotFound
shine = Shine()
# Search for Python Developer jobs in Bangalore
for job in shine.jobs.search(query="Python Developer", location="Bangalore"):
print(job.title, job.company, job.salary)
# Get full details for this job
detail = job.details()
print(detail.description, detail.industry, detail.skills)
break
# List all available categories
for category in shine.categories.list():
print(category.id, category.name, category.count)
# List available locations
for location in shine.locations.list():
print(location.id, location.name, location.count)
# Get trending searches
for search in shine.topsearches.list():
print(search.name, search.url, search.visibility)
Search for job listings on Shine.com by keyword, location, experience, salary, industry, or company. Returns paginated results with 20 jobs per page. When no filters are provided, returns all available jobs. The company parameter overrides query when provided.
| 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'). Values from get_locations_list. |
| experience | string | Minimum experience in years as a numeric string (e.g. '2', '4'). |
{
"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-based-at-poland-in-europe/vvinayak-associates/19076914",
"title": "Python Developers, based at POLAND in Europe",
"job_id": "19076914",
"salary": "Rs 4.0 - 8 Lakh/Yr",
"company": "Vvinayak Associates",
"job_url": "https://www.shine.com/jobs/python-developers-based-at-poland-in-europe/vvinayak-associates/19076914",
"snippet": "Urgent opening for Python Developers...",
"location": [
"Poland"
],
"experience": "3 to 8 Yrs",
"posted_date": "2026-05-29T16:18:21"
}
],
"total_count": 18896,
"total_pages": 945,
"current_page": 1
},
"status": "success"
}
}About the Shine API
Job Search and Filtering
The search_jobs endpoint returns paginated results of 20 jobs per page, each including job_id, title, company, location, experience, salary, posted_date, slug, job_url, and a short snippet. Filters can be combined: pass a query string for keyword search, a location name (e.g. 'Bangalore', 'Delhi'), an experience value in years, a salary ID, an industry ID, or a company name. Note that company overrides query when both are supplied. Pagination is controlled via the page parameter, and total_count, total_pages, and current_page are always returned alongside results.
Job Details
get_job_details takes a job_slug from search results (format: title-slug/company-slug/numeric-id) and returns a structured record with title, job_id, salary, skills (array of strings), company, industry, job_type (1=full-time, 2=part-time, 3=contract, 4=intern), location (array), experience range, and a full description that may contain HTML entities. If a listing has expired or been removed, the endpoint returns a stale_input error with kind input_not_found rather than a generic failure.
Reference Endpoints
get_job_categories returns all industry and functional categories available on Shine.com, each with an id, name, and current job count, sorted by count descending. The id values map directly to the industry filter in search_jobs. Similarly, get_locations_list returns location objects with id, name, and count, and the name values map to the location filter. Both endpoints require no input parameters and are useful for building filter UIs or auditing which categories and cities currently have active listings.
Trending Searches
get_top_searches returns an array of popular search objects each containing name, url, new_icon boolean, and visibility boolean. The response also includes a message string and status_code from the upstream source. This endpoint is useful for surfacing trending roles, work-from-home searches, and city-specific popular queries at a given point in time.
The Shine API is a managed, monitored endpoint for shine.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when shine.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 shine.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 into a multi-source job board using
search_jobskeyword and location filters. - Build a salary benchmarking tool by collecting the
salaryfield fromget_job_detailsacross companies and industries. - Populate a skills taxonomy by extracting the
skillsarray from thousands of job detail records. - Monitor hiring activity per industry by polling
get_job_categoriescounts over time. - Display location-based job counts in a heatmap using
get_locations_listdata. - Surface trending roles and search terms in a career discovery UI with
get_top_searches. - Track a specific company's open roles and required experience levels using the
companyfilter insearch_jobs.
| 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 Shine.com have an official public developer API?+
How do industry IDs work when filtering job searches?+
get_job_categories first to retrieve the full list of category objects, each with an id, name, and job count. Pass the id value (e.g. '18' for IT Services & Consulting) as the industry parameter in search_jobs. The same pattern applies to locations: use get_locations_list to get valid name values for the location filter.What happens if a job listing has been removed from Shine.com?+
get_job_details returns a stale_input error with kind: 'input_not_found' when the requested slug no longer corresponds to an active listing. This allows callers to distinguish expired listings from other error conditions and clean up stale slugs in their data store.Does the API return company profiles, recruiter contact details, or application status data?+
search_jobs), individual job records (via get_job_details), categories, locations, and trending searches. Company profile pages, recruiter contact details, and application tracking are not exposed. You can fork this API on Parse and revise it to add an endpoint targeting Shine.com company profile pages.Is job coverage limited to specific cities or industries in India?+
get_locations_list and get_job_categories endpoints both return live count values so you can see current distribution before querying. Tier-2 city and non-tech listings exist but are proportionally smaller. You can fork this API on Parse and revise it to apply additional post-filtering if your use case requires a specific regional or sector subset.