Extract structured data from shine.com — structured job listings from shine.com, one of India's largest job portals. Includes salaries, experience and optional recruiter contacts, with incremental monitoring and notifications.
Shine Job Scraper - India Job Listings on Apify →
No credit card required. No commitment. Cancel anytime.
- Click sign up — pick GitHub, Google, or email; takes ~30 seconds
- Open this actor — input is pre-filled with a working example
- Click Start — export results as JSON, CSV, or Excel
Your $5 monthly platform credit is enough to run this actor right away — and again every month — scraping typically several hundred to several thousand results per run, depending on your input.
Search with filters — Search by keyword and location. Filter by 🌍 country, 🧑💼 experience, 💰 salary band, and more.
Incremental mode — Only get new or changed listings since your last run. Content hash per listing — no duplicates, no re-processing.
Change classification — Track unchanged, expired, cross-run repost detection across runs. Build audit trails of how listings evolve over time.
Compact output — Emit core fields only (AI-agent / MCP-friendly). Keeps response size small for LLM workflows.
Description truncation — Cap description length per listing to control output size and cost.
Result cap — Stop after N listings (up to 1.000). Set to 0 for the full catalog.
Export anywhere — Download as JSON, CSV, or Excel. Stream via Apify API, webhooks, or integrations with Make, Zapier, Airbyte, Keboola.
Structured data — Every listing returns the same schema with consistent field naming. All fields always present — null when unavailable, never omitted.
Data pipeline automation Integrate with your ETL pipeline to collect structured listings from shine.com on a schedule. Export to CSV, JSON, or directly to your database. Use compact mode to control output size.
Market research Monitor listings, track trends, and analyze market dynamics with structured, deduplicated data from shine.com.
Change monitoring Run daily or hourly in incremental mode to capture only new, updated, or expired listings. Perfect for price-tracking, churn analysis, and alerting pipelines.
Compensation benchmarking Aggregate salary ranges across roles, industries, and locations on shine.com to inform pricing decisions, hiring plans, or candidate negotiations.
AI / LLM training data Structured JSON per listing is ready for RAG pipelines, embeddings, and agent workflows. Compact mode trims tokens for LLM context windows.
{
"query": "software engineer",
"location": "Bangalore",
"maxResults": 25
}| Parameter | Type | Default | Description |
|---|---|---|---|
query |
string | — | Job search keywords. Use JSON array for multi-query. |
country |
enum | "IN" |
Which shine.com market to search. |
location |
string | — | City, state, or region. Use JSON array for multi-location. |
startUrls |
array | — | Direct search or job detail URLs. |
maxResults |
integer | 25 |
Maximum total job listings to return (0 = unlimited). |
maxPages |
integer | 5 |
Maximum result pages to fetch per search. |
experience |
enum | — | Filter by required years of experience. |
salaryBand |
enum | — | Filter by annual salary band (Indian Lakh brackets). |
experienceFrom |
integer | — | Keep only jobs whose required experience overlaps this minimum (in years). Precise range filter applied to each job's parsed experience — finer than the band selector above. |
experienceTo |
integer | — | Keep only jobs whose required experience overlaps this maximum (in years). Combine with Experience From for an exact range, e.g. 4 to 7 years. |
industryId |
string | — | Advanced. Restrict results to a specific industry id (e.g. "18" for IT Services & Consulting). |
includeRecruiterContact |
boolean | false |
Add the recruiter's phone and email to each record where the listing provides them. Off by default — these are personal contact details, so enable only if you have a lawful basis to process them. |
descriptionMaxLength |
integer | 0 |
Truncate description to this many characters. 0 = no truncation. |
compact |
boolean | false |
Output only core fields (for AI-agent/MCP workflows). |
incrementalMode |
boolean | false |
Compare against previous run state and return only new or changed listings. stateKey is optional — it defaults to a stable key derived from your search inputs (query, location, filters) so different searches never share state. |
stateKey |
string | — | Optional. Stable identifier for the tracked search universe (e.g. "us-software-nyc"). Leave empty to auto-generate from search inputs. |
emitUnchanged |
boolean | false |
When incremental, also emit records that haven't changed. |
emitExpired |
boolean | false |
When incremental, also emit records no longer found. |
skipReposts |
boolean | false |
When incremental, skip jobs whose content matches an expired job from a prior run (cross-run repost detection). |
telegramToken |
string | — | Telegram bot token (from @BotFather). Required for Telegram notifications. |
telegramChatId |
string | — | Telegram chat or channel ID (e.g. "-100123456789"). Required when telegramToken is set. |
discordWebhookUrl |
string | — | Discord incoming webhook URL. Server Settings → Integrations → Webhooks → New Webhook. |
slackWebhookUrl |
string | — | Slack incoming webhook URL. api.slack.com/messaging/webhooks. |
notificationLimit |
integer | 5 |
Maximum number of jobs included in each notification message (1–20). |
notifyOnlyChanges |
boolean | false |
When Incremental Mode is on, only send notifications for NEW and UPDATED jobs. Has no effect outside incremental mode. |
whatsappAccessToken |
string | — | WhatsApp Cloud API permanent access token (System User token from Meta Business). Recipient must have messaged the business number within the last 24h (service-conversation window — free since Nov 2024). |
whatsappPhoneNumberId |
string | — | Your WhatsApp Business phone-number ID (numeric, from Meta dashboard). Required when whatsappAccessToken is set. |
whatsappTo |
string | — | Recipient phone in E.164 format without + (e.g. "436641234567"). Recipient must have messaged your business number within last 24h. |
webhookUrl |
string | — | Receives a JSON POST with {metadata, items} after each run. Universal escape hatch for n8n / Make / Zapier / custom backends. |
webhookHeaders |
object | — | Optional JSON object of custom headers (e.g. {"Authorization":"Bearer ..."}). |
descriptionFormat |
enum | "all" |
Pick a single description representation. all keeps every variant; text / html / markdown drop the others. |
excludeEmptyFields |
boolean | false |
Drop null, empty-string, and empty-array fields from each record before push. Smaller payloads for AI agents and dashboards. |
appConnector |
string | — | Optional. Pick a connected app under Settings → API & Integrations to receive your results (including any contact details). Best-effort across MCP connectors as Apify expands its catalog. |
mcpIssueTeam |
string | — | Only when the connected app is an issue tracker: the team (name or ID) the summary issue is created under, if that app requires one. |
Every listing returns the same 57-field schema. Missing values are null — never omitted.
jobIdjobKeytitlecompanyclientCompanycompanyIdcompanyLogolocationlocationsdescriptiondescriptionTextdescriptionHtmldescriptionMarkdowndescriptionLengthsalaryTextsalaryMinsalaryMaxsalaryCurrencysalaryPeriodemploymentTypeengagementTypeworkModeisWalkinexperienceLabelexperienceMinYearsexperienceMaxYearsindustryskillsvacanciespostedAtvalidThroughcanonicalUrlapplyUrlsourceUrlsourceCountrysourceDomainsearchQuerysearchUrlfetchedAtcontentQualitycontentHashextractedEmailsextractedPhonesextractedUrlssocialProfilesrecruiterPhonerecruiterEmailisRepostrepostOfIdrepostDetectedAtchangeTypetrackedHashfirstSeenAtlastSeenAtpreviousSeenAtexpiredAtstateKey
One object per listing. Here is a real example from a production run:
{
"jobId": "5379c011988ca3a900dc7f0a52ec7fd1ac74097d5ab10b0b08a411e8df7f544d",
"jobKey": "19075642",
"title": "Software Engineer",
"company": "Jobsplan Dot Com",
"clientCompany": null,
"companyId": "674874",
"companyLogo": null,
"location": "Manesar",
"locations": [
"Manesar"
],
"description": "JOB DESCRIPTION Job title: Software Engineer Base location: Manesar Experience: Minimum 3-6 years About the role Development and support for Track and Trace software. Windows appli…",
"descriptionText": "JOB DESCRIPTION Job title: Software Engineer Base location: Manesar Experience: Minimum 3-6 years About the role Development and support for Track and Trace software. Windows appli…",
"descriptionHtml": "<p><strong>JOB DESCRIPTION</strong></p>\r\n<p>Job title: Software Engineer<br /> Base location: Manesar</p>\r\n<p>Experience: Minimum 3-6 years</p>\r\n<p><strong>About the role</strong><…"
}Truncated — full records contain 57 fields. See Output fields for the complete schema.
Try Shine Job Scraper - India Job Listings now — $5 free credit, no credit card →
Pay only for what you extract. No subscription required — Apify's free $5 credit covers thousands of results.
| Event | Price (USD) |
|---|---|
| Actor Start | $0.0005 |
| Result | $0.00079 |
See the actor on Apify for current pricing.
How do I scrape shine.com? Use this actor on Apify to extract structured data from shine.com. Configure your search query and filters in the input, then click Start — no coding required.
How do I get shine.com data as JSON, CSV, or Excel? The actor writes each listing to Apify's dataset. Download as JSON, CSV, or Excel from the Console, stream via the API, or push to Make, Zapier, Airbyte, or Keboola.
Is it legal to scrape shine.com? Web scraping of publicly available data is generally legal. This actor only accesses publicly visible information. Always check shine.com's terms of service for your specific use case.
How much does it cost? Pay-per-event pricing — you only pay for listings extracted. Apify's free $5 credit is enough to run thousands of results before you pay anything.
How does incremental mode work? Each listing gets a content hash. On subsequent runs, only new or changed listings are emitted — saving time, compute, and storage. Expired listings can be tracked separately.
Do I need an API key or credentials? No. Just sign up for Apify, paste your input, and click Start. No credit card required.
- Djinni Scraper — Ukraine & CEE tech jobs with salary and English level
- Work.ua Scraper — Ukraine's work.ua job listings
- NoFluffJobs Scraper — Poland & CEE IT jobs with transparent salary ranges
- OLX Jobs Scraper — OLX job listings across 7 CEE countries
- Prace.cz Scraper — Czech Republic's prace.cz job board
- Profession.hu Scraper — Hungary's profession.hu job board
Browse all Black Falcon Data actors →
New to Apify? Create a free account with $5 credit — no credit card required.
- Sign up — $5 platform credit included
- Open Shine Job Scraper - India Job Listings and configure your input
- Click Start — export results as JSON, CSV, or Excel
Need more later? See Apify pricing.
Black Falcon Data builds production-grade web scrapers for job boards and marketplace data. Browse our full actor catalog at www.blackfalcondata.com.
Last updated: 2026 07