
Global Sources Supplier Scraper
scrape.ly/store/cornerledger/globalsources-scraperLead generationE-commerce
2 monthly users

Scrape Shine.com (India) job listings by keyword, city and the site's filters, or from search and job URLs. Get title, company, salary in lakh, experience, locations, skills, employment type, dates and the full description.
Turn any Shine.com job search into a clean spreadsheet: title, company, salary in lakh, experience range, cities, skills, posting and expiry dates, and the full job description. Search by keyword and city with Shine's own filters, or paste search and job URLs. No login, no browser, and you pay only for the jobs you get.
salary_min_lakhs and salary_max_lakhs, and salary_disclosed tells you when the recruiter hid the pay (the scraper checks what the listing actually shows instead of guessing).data analyst, java developer, telecaller) and optionally a location such as Bangalore or Delhi NCR. Or paste Shine.com search or job URLs.| Field | What it does |
|---|---|
searchKeywords | Keywords to search. Each keyword is its own search; duplicates across keywords are saved once. |
location | One city or area, as typed in Shine's location box. Empty means all of India. |
startUrls | Shine.com search URLs (/job-search/..., filters in the URL are kept) or job URLs (/jobs/...). |
maxJobs | Jobs per keyword or search URL. 0 = all. |
experienceLevel, salaryRange, employmentType, shiftType, hiringType | Shine's own filters. |
postedWithinDays | Only jobs posted in the last N days (read newest first). |
sortBy | relevance or freshness (newest first). |
includeJobDescription | Full description (on by default) or the first 500 characters. |
monitorMode | Skip jobs this search already delivered in an earlier run. |
{
"searchKeywords": ["data analyst", "business analyst"],
"location": "Pune",
"experienceLevel": "3to5",
"employmentType": "regular",
"maxJobs": 50
}
One row per job.
| Field | Example |
|---|---|
job_id | 19869833 |
title | Data Analyst |
company | DSHINE PRO SOLUTIONS |
locations / location | ["Bangalore", "Chennai", "Hyderabad"] / Bangalore, Chennai, Hyderabad |
experience_text, experience_min_years, experience_max_years | 0 to 3 Yrs, 0, 3 |
salary_text, salary_min_lakhs, salary_max_lakhs, salary_disclosed | 3.0 - 5 Lakh/Yr, 3, 5, true |
employment_type, shift_type, hiring_type, work_mode | regular, full-time, regular, onsite |
industry, department, skills, education, vacancies | IT Services & Consulting, ["IT Operations / EDP / MIS"], ["data analyst", ...], [], openings when listed |
description | Full job text |
apply_url | Job page on shine.com |
posted_date, posted_days_ago, expiry_date | ISO dates and age in days |
recruiter_name, walk_in_address, walk_in_date, company_logo, early_applicant | When Shine lists them |
search_keyword, search_location, scraped_at | Which search found the row, and when |
Example row from a real run (description shortened):
{
"job_id": "19869833",
"title": "Data Analyst",
"company": "DSHINE PRO SOLUTIONS",
"company_id": 785640,
"locations": [
"Bangalore",
"Chennai",
"Hyderabad"
],
"location": "Bangalore, Chennai, Hyderabad",
"experience_text": "0 to 3 Yrs",
"experience_min_years": 0,
"experience_max_years": 3,
"salary_text": "3.0 - 5 Lakh/Yr",
"salary_min_lakhs": 3,
"salary_max_lakhs": 5,
"salary_disclosed": true,
"employment_type": "regular",
"shift_type": "full-time",
"hiring_type": "regular",
"work_mode": "onsite",
"industry": "IT Services & Consulting",
"department": [
"IT Operations / EDP / MIS"
],
"skills": [
"data analyst",
"it fresher",
"dot net developer"
],
"education": [],
"vacancies": null,
"description": "We are seeking a motivated and detail-oriented Data Analyst to join our team. This role is ideal for recent graduates or individuals with up to three years of e ...",
"apply_url": "https://www.shine.com/jobs/data-analyst/dshine-pro-solutions/19869833",
"recruiter_name": null,
"posted_date": "2026-10-20T12:13:02Z",
"posted_days_ago": 0,
"expiry_date": "2026-11-04T12:13:00Z",
"early_applicant": true,
"search_keyword": "data analyst",
"search_location": "Bangalore",
"scraped_at": "2026-10-21T04:52:08.983Z"
}
You pay $1.90 per 1,000 jobs saved ($0.0019 per job), plus a small amount of platform usage (compute and datacenter proxy traffic). Example: 1,000 jobs ≈ $1.90 in job fees plus about one cent of usage. Jobs that monitor mode skips are not charged, and nothing is charged when a search finds no jobs.
Is it legal to scrape Shine.com? The scraper reads only public job listings that anyone can open without an account. Make sure your use of the data follows the site's terms and the data-protection laws that apply to you.
Do I need a Shine account, cookies or my own proxy? No. No login is used, and the default datacenter proxy works. You can switch to residential in the Proxy section if you ever see blocks.
How many jobs can I get?
As many as the search lists: set maxJobs to 0. Shine shows the total for each search; the run stops cleanly at the last page.
Why is a salary "Not Disclosed"?
Many recruiters on Shine hide the pay. Then salary_disclosed is false and the number fields are empty, exactly as on the website.
Why are some fields empty?
Fields such as recruiter_name, education, vacancies or the walk-in details are filled only when the recruiter adds them.
Can I schedule it or use the API? Yes. Save the input as a task, add a schedule (daily works well with monitor mode on), and read results through the API, webhooks or integrations.
Every field below can be set in the run form, passed through the API, or saved as a task. Unset fields fall back to the defaults shown.
searchKeywordsarrayOptionalSearch keywords
Job titles, skills or company names to search on Shine.com, for example 'data analyst', 'java developer' or 'telecaller'. Each keyword is its own search; jobs found by several keywords are saved once.
locationstringOptionalLocation
One Indian city or area, for example 'Bangalore', 'Bengaluru', 'Delhi NCR', 'Gurugram', 'Pune' or 'Mysore'. It works the same way as the location box on shine.com. Leave empty for all of India.
startUrlsarrayOptionalSearch or job URLs
Optional. Shine.com search pages (www.shine.com/job-search/...), with any filters in the address, or single job pages (www.shine.com/jobs/...). Filters set below are added to search URLs that don't have their own.
maxJobsintegerOptionaldefault 20Max jobs per search
How many jobs to save for each keyword or search URL. 0 means every job the search lists.
Shine.com's own search filters. They apply to keyword searches and are added to search URLs.
experienceLevelenumOptionaldefault "any"Experience
Years of experience the job asks for.
salaryRangeenumOptionaldefault "any"Salary (lakh a year)
Annual pay band (CTC) in lakh rupees.
employmentTypeenumOptionaldefault "any"Employment type
Regular, contractual, internship or work-from-home jobs.
shiftTypeenumOptionaldefault "any"Full or part time
Full-time or part-time jobs.
hiringTypeenumOptionaldefault "any"Interview type
Only walk-in interviews, or only regular applications.
postedWithinDaysintegerOptionalPosted within (days)
Only jobs posted in the last N days. Results are then read newest first. Leave empty for any date.
sortByenumOptionaldefault "relevance"Sort by
Shine's relevance ranking, or the newest postings first.
What each row contains and how repeat runs behave.
includeJobDescriptionbooleanOptionaldefault trueFull job description
Save the whole description text. Turn off for a short description (at most 500 characters) and a faster, smaller run.
monitorModebooleanOptionaldefault falseOnly new jobs (monitor mode)
For scheduled runs: skip jobs this same search already delivered in an earlier run, so you only get and pay for new postings. Remembers up to 50,000 jobs per search setup.
proxyConfigurationobjectOptionaldefault {"useScrapelyProxy":true,"scrapelyProxyGroups":["DATACENTER…Proxy configuration
Shine.com works well with the default datacenter proxy. Switch to residential only if runs get blocked.
Every run writes its results to a dataset. Preview it in the dashboard, then export it or read it through the API.
| Field | Type | Description |
|---|---|---|
| job_id | string | null | Shine job ID |
| title | string | null | Job title |
| company | string | null | Company or recruiting consultancy |
| company_id | number | null | Shine company ID |
| company_logo | string | null | Company logo URL, when shown |
| locations | array | null | Job locations |
| location | string | null | Locations as one comma-separated string |
| experience_text | string | null | Experience as Shine shows it, e.g. '3 to 7 Yrs' |
| experience_min_years | number | null | Minimum years of experience |
| experience_max_years | number | null | Maximum years of experience |
| salary_text | string | null | Salary as the listing shows it, e.g. '3.0 - 7 Lakh/Yr', or 'Not Disclosed' |
| salary_min_lakhs | number | null | Minimum annual salary in lakh rupees |
| salary_max_lakhs | number | null | Maximum annual salary in lakh rupees |
| salary_disclosed | boolean | null | True when the recruiter shows the salary |
| employment_type | string | null | regular, contractual, internship or work-from-home |
| shift_type | string | null | full-time or part-time |
| hiring_type | string | null | regular or walk-in |
| work_mode | string | null | onsite, hybrid or remote |
| industry | string | null | Industry |
| department | array | null | Department / functional area, when listed |
| skills | array | null | Skills and keywords tagged on the job |
| education | array | null | Required degrees, when listed |
| vacancies | number | null | Number of openings, when listed |
| description | string | null | Job description text |
| apply_url | string | null | Job page on shine.com |
| recruiter_name | string | null | Recruiter name, when shown |
| walk_in_address | string | null | Walk-in interview address, when listed |
| walk_in_date | string | null | Walk-in date, when listed |
| posted_date | string | null | When the job was posted (ISO 8601) |
| posted_days_ago | number | null | Days since the job was posted |
| expiry_date | string | null | When the listing expires (ISO 8601) |
| early_applicant | boolean | null | Shine's early-applicant badge |
| search_keyword | string | null | Keyword of the search that found the job |
| search_location | string | null | Location of that search |
| scraped_at | string | null | When the row was scraped (ISO 8601) |
You pay for the events the actor reports, such as each result or page it produces. Platform usage is included in the event prices.
| Event | Charged when | Price |
|---|---|---|
| Job | One saved Shine.com job, full description included. | $0.0019 |
Run this actor from your own code. Swap in your API token and the examples work as-is.
import { ScrapelyClient } from 'scrapely-client'
const client = new ScrapelyClient({ token: process.env.SCRAPELY_TOKEN })
// Start the actor and wait for the run to finish.
const run = await client.actor('openrole/shine-jobs-scraper').call({
"searchKeywords": [
"data analyst"
],
"location": "Bangalore",
"maxJobs": 20,
"proxyConfiguration": {
"useScrapelyProxy": true,
"scrapelyProxyGroups": [
"DATACENTER"
]
}
})
// Read the dataset the run produced.
const { items } = await client.dataset(run.defaultDatasetId).listItems()
console.log(items)Tokens live in your account settings. Keep them server-side: a token carries the full permissions of your account.
Connect the Scrape.ly MCP server once and your agent can run this actor as a tool. Pick your tool:
Fetch scrape.ly/agents.md and run openrole/shine-jobs-scraperPaste into Claude Code, Codex, Cursor or any AI agent. It signs you in once in the browser.
{
"mcpServers": {
"scrapely": {
"url": "https://api.scrape.ly/mcp?tools=actors,runs,storage,docs&actors=openrole/shine-jobs-scraper"
}
}
}No key in the file: your client opens the browser to sign you in the first time it connects.
Inputs the developer prepared for common jobs. Open one to see its input, then copy it to your account to run it as-is or adjust it.
Keyword search with full descriptions and salary.
Paste a Shine.com search URL with its filters.
Shine's experience, employment and shift filters.
Newest first with a posted-within cutoff.
City alias and short descriptions for a faster run.
Scrape.ly gives you the infrastructure, the tooling, and the team to extract, process, and operationalize web data at any scale. Setup takes minutes. The advantage lasts forever.