Shine.com Jobs Scraper — 22 Fields, Monitor Mode, No Login avatar

Shine.com Jobs Scraper — 22 Fields, Monitor Mode, No Login

Pricing

from $0.60 / 1,000 jobs

Go to Apify Store
Shine.com Jobs Scraper — 22 Fields, Monitor Mode, No Login

Shine.com Jobs Scraper — 22 Fields, Monitor Mode, No Login

Scrape live Shine.com (Times Group) job listings: title, company, salary, experience band, location, employment type, skills and full description. Filter by keyword, location, experience, salary and employment type. No login, no browser. Use it as an MCP server in Claude, ChatGPT & AI agents.

Pricing

from $0.60 / 1,000 jobs

Rating

0.0

(0)

Developer

The Mine Works

The Mine Works

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

2 hours ago

Last modified

Share

Shine.com Jobs Scraper: Salary, Experience & Skills

Scrape live Shine.com (Times Group) job listings — title, company, salary, experience band, location, employment type and full description. Filter by keyword, location, experience, salary and employment type, exactly the way Shine's own site does. No login, no browser, pay per job. Use it as an MCP server in Claude, ChatGPT & AI agents.

⚡ Part of a 90+ scraper suite with thousands of runs · no login, no cookies, no ban risk.

💸 You are only charged for delivered results — empty searches, failed pages and duplicates are never billed.

What it does

Shine.com is one of India's larger broad-market job boards (Times Group), covering IT, BPO, banking, retail and manufacturing roles. Its search page is a Next.js app, but the client itself calls a fully public, unauthenticated JSON endpoint to load and filter results — the same endpoint this actor reads directly. No browser, no session cookies, no login wall, and (verified during build) no anti-bot challenge of any kind.

That means every filter you see on shine.com — location, experience, salary band, employment type, shift type, sort order — is a plain input field here, each mapped to Shine's own internal filter IDs rather than a guess. You get one record per job: title, company, every listed location, a normalised experience range, a normalised salary range (in ₹ lakhs/year, when published), employment type, shift type, Shine's own skill/keyword tags, the description with HTML stripped, and a direct apply URL.

Input

FieldTypeRequiredDefaultDescription
searchKeywordsarrayyesOne or more keywords, e.g. "python developer", "data scientist". Each is searched separately and results are merged.
locationstringno(all India)City name, e.g. "Bangalore". Common Indian cities resolve to Shine's own location filter; any other name falls back to Shine's own location search so nothing is silently dropped.
experienceLevelselectnoAny< 1 Year, 1 to 2 Years, 3 to 5 Years, 6 to 8 Years, 9 to 10 Years, 11 to 15 Years, > 15 Years — Shine's own experience bands.
salaryRangeselectnoAnyUp to 2 Lakh through > 25 Lakh — Shine's own annual CTC bands.
employmentTypeselectnoAnyRegular, Contractual, Internship, Work from home.
shiftTypeselectnoAnyFull time or Part time.
sortByselectnorelevancerelevance (Shine's default ranking) or freshness (newest postings first — pairs well with Monitor mode).
maxJobsintegerno5Maximum jobs to return across all keywords. Hard cap 1000.
includeJobDescriptionbooleannofalseReturn the full job description; otherwise truncated to 500 characters.
monitorModebooleannofalseDeliver only jobs not seen in a previous run with the same input — for scheduled daily/weekly monitoring.
proxyConfigurationobjectnononeOptional. Shine's search endpoint is publicly reachable with no proxy at all; only enable this for very high-volume runs.

Example input

{
"searchKeywords": ["python developer"],
"location": "Bangalore",
"experienceLevel": "3to5",
"salaryRange": "6to8",
"maxJobs": 25,
"includeJobDescription": false
}

Output

One record per job. Field list and example below are taken from a real run against the live actor, not a mock-up.

FieldTypeExample
job_idstring"19181937"
titlestring"Python Developer with ReactJS REST API AI 2Plus Yrs Chennai, Pune & Blore"
companystring"WHITE HORSE MANPOWER CONSULTANCY (P) LTD"
locationsarray["Bangalore", "Chennai", "Pune"]
locationstring"Bangalore, Chennai, Pune"
experience_min_yearsnumber2
experience_max_yearsnumber7
experience_textstring"2 to 7 Yrs"
salary_textstring"Rs 4.0 - 6 Lakh/Yr"
salary_min_lakhsnumber4
salary_max_lakhsnumber6
employment_typestring"regular"
shift_typestring"full-time"
skillsarray["javascript", "python", "react developer", "reactjs developer", …]
descriptionstring"Job Description (JD) Hiring Python Developer with ReactJS & AI…"
apply_urlstring"https://www.shine.com/jobs/python-developer-with-reactjs-rest-api-ai-2plus-yrs-chennai-pune-blore/white-horse-manpower-consultancy-p-ltd/19181937"
recruiter_namestring"Coders Brain Technology"
posted_datestring"2026-06-30T18:30:05.000Z"
posted_days_agonumber30
expiry_datestring"2026-08-29T00:00:00.000Z"
early_applicantbooleanfalse
scraped_atstring"2026-07-31T18:18:20.597Z"

Example output

{
"job_id": "19307153",
"title": "Python Developer with Rest api (banglore)",
"company": "G-Jobs Hiring For Coders Brain Technology",
"locations": ["Bangalore"],
"location": "Bangalore",
"experience_min_years": 6,
"experience_max_years": 10,
"experience_text": "6 to 10 Yrs",
"salary_text": "[Salary Hidden]",
"employment_type": "regular",
"shift_type": "full-time",
"skills": ["Python", "REST API", "Automation Testing", "DevOps", "Azure", "Pytest"],
"description": "Experience: 6 +Years Location: Bangalore The minimum necessary qualification is a bachelors degree in a relevant Engineering field…",
"apply_url": "https://www.shine.com/jobs/python-developer-with-rest-api-banglore/coders-brain-technology/19307153",
"recruiter_name": "Coders Brain Technology",
"posted_date": "2026-07-26T08:26:14.000Z",
"posted_days_ago": 5,
"expiry_date": "2026-09-24T08:26:12.000Z",
"early_applicant": false,
"scraped_at": "2026-07-31T18:18:20.704Z"
}

Use cases

  • India hiring-demand tracking — pull a keyword daily with Monitor mode on to see only newly posted roles, without re-paying for the whole feed each run.
  • Salary benchmarkingsalary_min_lakhs/salary_max_lakhs are numeric, so compensation-by-experience analysis is a groupby, not a text-parsing project.
  • Recruiter sourcing lists — combine experienceLevel + location + employmentType to build a targeted candidate-outreach or client-lead list.
  • Remote/WFH tracking — filter employmentType to work-from-home to isolate remote listings specifically, rather than guessing from free text.
  • Skills-demand research — the skills array reflects Shine's own keyword tags per listing, so you can count technology demand without NLP over the description.
  • Feeding an AI agent or job-alert bot — call this actor as an MCP tool so an agent can answer "what Python jobs pay 6-8 LPA in Bangalore right now" directly from live data.

FAQ

Is this scraping HTML?

No. It calls the same public JSON endpoint (/api/v2/search/simple/) Shine's own web app calls to load and filter results client-side — no browser, and it runs in a few seconds per keyword rather than the tens of seconds a Playwright-based scraper needs.

Do I need a proxy?

No. The endpoint was verified reachable with no User-Agent, no cookies and no proxy at all. proxyConfiguration is exposed for very high-volume users who want IP rotation, but leaving it unset is the normal, supported way to run this actor.

Why is salary_text sometimes "[Salary Hidden]"?

Many Indian recruiters and consultancies choose not to publish a number on the listing itself. When Shine hides it, this actor reports that faithfully rather than inventing a figure — the numeric salary_min_lakhs/salary_max_lakhs fields are simply absent on those records.

How does location filtering work for cities you don't list?

Common Indian metros map to Shine's own internal location IDs for exact filtering. Any other city name (a smaller town, for instance) falls back to Shine's own <keyword>-jobs-in-<city> search convention, so no location input is ever silently ignored — it is simply matched the way Shine's own site would match a manual search for that city.

Can I get only the newest postings?

Yes — set sortBy to freshness, and turn on monitorMode if you want the actor to remember what it already delivered and charge you only for genuinely new listings on repeat/scheduled runs.

Billing

Pay per event: one job-scraped event per delivered record, charged only after the record is validated and stored. Empty results, failed pages and duplicates are never charged. Store-plan discounts apply automatically for Apify Bronze/Silver/Gold+ users.

Run on a schedule

In Apify Console: open this Actor → SchedulesAdd schedule → pick a cadence (e.g. daily) → Save. Combined with monitorMode: true, each scheduled run delivers only jobs not seen in the previous run, so you pay for new postings, not the whole feed every time.

Use in Claude, ChatGPT & any MCP agent

This actor runs as an MCP server, so an AI agent can call it directly:

https://mcp.apify.com/?tools=themineworks/shine-jobs-scraper
from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("themineworks/shine-jobs-scraper").call(run_input={
"searchKeywords": ["python developer"],
"location": "Bangalore",
"maxJobs": 25,
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item)

This actor collects only publicly available information — the same data any visitor can see on shine.com without logging in. It does not access private or authenticated areas, does not attempt to bypass any paywall or login wall, and collects no personal data beyond what the source already publishes openly. You are responsible for using the output in line with Shine.com's terms and with the data protection law that applies to you.

MIT © The Mine Works