CutShort Jobs Scraper | India Tech, 15 Fields, No Login avatar

CutShort Jobs Scraper | India Tech, 15 Fields, No Login

Pricing

from $1.20 / 1,000 job scrapeds

Go to Apify Store
CutShort Jobs Scraper | India Tech, 15 Fields, No Login

CutShort Jobs Scraper | India Tech, 15 Fields, No Login

Scrape CutShort job listings across India — title, company, salary range, skills, experience and location. No login, no cookies, pay per job. Built for recruiting feeds and hiring-signal pipelines. Use it as an MCP server in Claude, ChatGPT & AI agents.

Pricing

from $1.20 / 1,000 job scrapeds

Rating

0.0

(0)

Developer

The Mine Works

The Mine Works

Maintained by Community

Actor stats

0

Bookmarked

39

Total users

17

Monthly active users

a day ago

Last modified

Share

🚀 CutShort Jobs Scraper: No Login · From $1.20/1k

What does CutShort Jobs Scraper do?

It turns CutShort's India tech job board into structured JSON: title, company, company size, every listed location, a remote flag, the full skills array, the salary band as published, minimum and maximum years of experience, role type and the description. Leave the input empty and it reads CutShort's own /jobs index, discovers the category pages listed on it, and walks them until it hits your job budget, or pass specific category slugs to scrape only the pools you care about.

CutShort is one of India's larger startup hiring platforms, and unlike most job boards it publishes a genuinely rich skills taxonomy: every listing carries an explicit skills array and a numeric experience band rather than free text buried in a description. This actor reads CutShort's own public JSON search surface directly, no browser, no login, no cookies.

✅ No login required | ✅ No browser, plain HTTP | ✅ Pay only for delivered jobs | ✅ MCP-ready for AI agents

Who is it for?

Recruiters and startup talent teams sourcing India tech candidates by skill and experience band. Founders and investors reading a company's open roles as a hiring or funding signal. Data teams building a skills demand dataset for India tech roles without writing an NLP pipeline over job text.

How much does it cost to scrape CutShort jobs?

You pay per job actually delivered, plus a small one time fee each time the actor starts running.

Apify planPrice per 1,000 jobs
Free$1.80
Bronze$1.55
Silver$1.35
Gold and above$1.20

Every run also carries a one time Actor Start fee of $0.005 (billed once per run, not per job). The Pricing tab on this page is the single source of truth and always shows the rate for your own plan. If this table and the Pricing tab ever disagree, the Pricing tab is right.

What a real job costs. Apify's Free plan includes $5 of usage credit every month, roughly 2,780 CutShort jobs a month at no cost to you. A 500 job pull costs about $0.60 on Gold, plus the $0.005 start fee. A 2,000 job pull across several category slugs costs about $2.40 on Gold.

What is never charged. Empty searches, failed pages and duplicate listings are never billed against the per job rate. The charge event fires only after a job record is validated and stored.

How does it work?

CutShort renders its job pages with Next.js and ships the full job list inside the page's own __NEXT_DATA__ island, a dehydrated React Query cache embedded as JSON in the HTML. This actor fetches the page over plain HTTP, extracts that island, and reads the job array straight out of it, no browser needed.

With no searchSlugs given, the actor first fetches CutShort's /jobs index, which itself carries a topJobsList of category slugs; it queues up to 25 of those and walks each one in turn. Pass your own searchSlugs (for example remote-golang-jobs) to scrape only specific category pools instead. Jobs are deduplicated by CutShort's own job ID across every page fetched in the run, so the same listing appearing under two categories is only billed once.

Requests go through Apify's datacenter proxy by default; a live comparison found datacenter and residential returning identical results at lower cost, so datacenter is the default and residential is used automatically as a one shot fallback only if a page fails on datacenter. The actor stops itself early if several consecutive pages in a row deliver no new jobs, so a run against an exhausted or narrow slug set does not keep paying for empty pages.

What input does it take?

{
"searchSlugs": ["remote-golang-jobs", "remote-react-jobs"],
"maxJobs": 100
}
FieldTypeRequiredDefaultDescription
searchSlugsarrayNo[]CutShort job category slugs to scrape, e.g. remote-golang-jobs. Leave empty to auto discover categories from the jobs index.
maxJobsintegerNo25Maximum jobs to return across all pages.
proxyConfigurationobjectNoDatacenterDefaults to Apify's datacenter proxy. Residential is used automatically as a one shot fallback if a page fails on datacenter.
allowResidentialFallbackbooleanNotrueIf a page fails on datacenter, retry it once on Indian residential before giving up. Turn off to force datacenter only.

What data do you get back?

One record per job, up to 15 fields. Field list and example are taken from a real run, not a mock up. A real run returns an array of records; three below show a full time office role, a remote contract and a recruiter posting on a client's behalf.

[
{
"job_id": "67bd5df9d78a650029b66c32",
"title": "Senior Software Architect",
"company": "NeoGenCode Technologies Pvt Ltd",
"company_size": "51-200",
"locations": ["Bengaluru (Bangalore)"],
"remote": false,
"skills": ["MERN Stack", "MongoDB", "Express", "React.js", "NodeJS (Node.js)", "AWS", "Docker", "Kubernetes"],
"salary": "INR 3000000-7000000",
"experience_min_years": 11,
"experience_max_years": 20,
"role_types": ["full_time"],
"description": "Position Name: Senior Software Architect. Location: UB City, Bengaluru (Hybrid, 3 days in office). Experience: 11 to 18 Years. We are looking for a Senior Software Architect to design, build and scale high performance SaaS B2B applications on the MERN stack and AWS...",
"url": "https://cutshort.io/job/Senior-Software-Architect-Bengaluru-Bangalore-NeoGenCode-Technologies-Pvt-Ltd-EMFogiZR",
"hiring_for_client": false,
"scraped_at": "2026-09-10T09:24:20.859Z"
},
{
"job_id": "67c1a92ffa78650029b6a114",
"title": "Remote React Native Developer",
"company": "Loopline Labs",
"locations": ["Remote"],
"remote": true,
"skills": ["React Native", "TypeScript", "Redux", "REST API"],
"salary": "INR 1200000-2000000",
"experience_min_years": 2,
"experience_max_years": 5,
"role_types": ["contract"],
"description": "6 month remote contract to build cross platform mobile screens for a consumer fintech app. TypeScript and React Native required, prior fintech app store release a plus...",
"url": "https://cutshort.io/job/Remote-React-Native-Developer-Loopline-Labs-AbTuQmXZ",
"hiring_for_client": false,
"scraped_at": "2026-09-10T09:24:21.442Z"
},
{
"job_id": "67c1a9b0fa78650029b6a209",
"title": "Growth Marketing Manager",
"company": "Blume Talent Partners",
"company_size": "11-50",
"locations": ["Mumbai", "Pune"],
"remote": false,
"skills": ["Performance Marketing", "SQL", "Google Ads", "Meta Ads", "Analytics"],
"experience_min_years": 4,
"experience_max_years": 8,
"role_types": ["full_time"],
"description": "Hiring on behalf of a D2C beauty brand for a Growth Marketing Manager to own paid acquisition across Google and Meta, with a strong analytics bent...",
"url": "https://cutshort.io/job/Growth-Marketing-Manager-Blume-Talent-Partners-CvRfKmYT",
"hiring_for_client": true,
"scraped_at": "2026-09-10T09:24:22.017Z"
}
]

Note the third record: it has no salary field at all rather than a zero or null value, and hiring_for_client: true flags that Blume Talent Partners is posting on behalf of another company, exactly as CutShort's own data marks it.

FieldDescription
job_idCutShort's internal job ID
titleJob title (CutShort calls this the headline)
companyCompany name
company_sizeEmployee count band, present when CutShort publishes it
locationsArray of listed locations
remoteWhether CutShort flags the role remote
skillsFull skills array, exactly as CutShort tags it
salarySalary band as published, currency and range as a string
experience_min_years / experience_max_yearsExperience band, numeric
role_typesfull_time, contract, internship, as tagged by CutShort
descriptionJob description, HTML preserved, truncated to 4,000 characters
urlDirect link to the listing on cutshort.io
hiring_for_clientWhether the poster is hiring on behalf of a client company
scraped_atISO timestamp when this record was captured

Fields the source does not publish for a given job are omitted rather than returned as null or 0. If a run finds nothing, a single status: "no_results" record explains why; it is never billed.

What are the limitations?

Worth knowing before you buy, so there are no surprises:

  • Salary and company size are frequently absent. Many Indian startup listings omit both. When CutShort publishes a value the field carries it as shown; when it does not, the field is absent rather than a guessed zero.
  • No enforced hard cap on maxJobs. Unlike a fixed page limit, this actor is naturally bounded by up to 25 category pages (or the searchSlugs you supply) and stops once pages stop yielding new jobs, so a very large maxJobs may return fewer jobs than requested if the category pool is exhausted.
  • Depends on CutShort's own page bundling. The actor reads the __NEXT_DATA__ island CutShort embeds in its HTML. If CutShort changes how it structures that island, extraction could return fewer fields until the actor is updated; this is monitored and has been stable in practice.
  • Skills are not normalised. They are returned exactly as CutShort publishes them, including their own variants such as NodeJS (Node.js). Normalising them would be lossy and opinionated, so mapping is left to you.
  • Description keeps CutShort's own HTML formatting, truncated to 4,000 characters, rather than being converted to plain text.

What can you use it for?

India tech talent demand analysis. The skills array is structured, so you can count demand per technology without NLP over job text.

Salary banding by experience. experience_min_years and experience_max_years are numeric, which makes compensation versus seniority analysis a groupby rather than a parsing project.

Startup hiring signals. A company opening several senior roles at once, visible across category pages, is a fundable growth signal worth tracking.

Recruiter sourcing lists. Filter to a skill plus an experience band to build a target list of companies actively hiring for it.

How do I get started?

  1. Open the actor. Leave searchSlugs empty to auto discover categories, or add specific slugs like remote-golang-jobs.
  2. Set maxJobs to control cost. Start small (5 to 10) to see the data shape before scaling up.
  3. Click Start.
  4. Download as JSON, CSV or Excel, or pull the dataset via API or MCP.

Can I run it on a schedule?

Yes, with Apify's built in Schedules. No code and no cron server of your own.

  1. Run the actor once with the input you want repeated, then click Save as a task at the top of the run form. This keeps your exact input attached for every future run.
  2. In the Apify Console, go to Schedules in the left sidebar, then Create new.
  3. Name it, set your timezone, and pick a frequency: a preset (hourly, daily, weekly) or a cron expression such as 0 6 * * * for daily at 6am.
  4. Under Actors or tasks to run, add the task you saved in step 1.
  5. Save. It then runs unattended, billed the same pay per job way as a manual run. Nothing is charged just for the schedule existing.

Full options, including time zones, run notifications and pausing, are in Apify's Schedules documentation.

This actor reads only CutShort's public job listings, the same listings any visitor can see without logging in. It does not access any authenticated area and does not attempt to bypass a login wall or paywall.

This is general information, not legal advice. If a result set contains personal data, your use of it may fall under data protection laws such as India's DPDP Act, GDPR or CCPA depending on where you and your data subjects are. You are responsible for using the output in line with CutShort's terms and the law that applies to you.

FAQ

Is this scraping HTML? Not in the usual sense. It reads a JSON island CutShort embeds inside its own HTML, the same data CutShort's React front end uses to render the page, so it needs no browser and costs a fraction of a browser based scraper.

Are the skills normalised? No. They are returned exactly as CutShort publishes them, variants included. Mapping them to your own taxonomy is left to you, since normalising them centrally would be lossy.

Is salary always present? No. Many Indian startup listings omit it. When CutShort publishes a band the field carries it as shown; when it does not, the field is absent rather than zero, so "not disclosed" never looks like a real number.

Can I filter to remote only roles? Yes. Every record carries a boolean remote flag, and role_types distinguishes full time from contract and internship.

What happens if I don't pass any searchSlugs? The actor auto discovers up to 25 category pages from CutShort's own jobs index and walks them, so leaving it empty is the "just give me the board" option.

Can I use CutShort Jobs Scraper through an MCP server? Yes. It is exposed as an MCP tool, so any MCP-compatible AI assistant, Claude, ChatGPT, or your own agent, can call it directly. See "Use in Claude, ChatGPT and any MCP agent" above for the paste-ready prompt and setup.

Use in Claude, ChatGPT and any MCP agent

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

https://mcp.apify.com/?tools=themineworks/cutshort-jobs-scraper

Things an agent can ask for once connected:

  • "Find remote Golang jobs on CutShort with at least 3 years of experience."
  • "List CutShort companies hiring more than two senior roles right now."
  • "Pull 50 React jobs from CutShort and show me the most requested skills."

Copy this into your AI assistant

Paste the line below into ChatGPT, Claude, or any assistant connected to Apify's MCP, and it will run the job for you:

Use the Apify actor themineworks/cutshort-jobs-scraper to find 50 remote golang jobs on CutShort with at least 3 years of experience. Return the results as a table.

Or call it programmatically with the Apify client:

from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("themineworks/cutshort-jobs-scraper").call(run_input={"searchSlugs": [], "maxJobs": 50})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item)

Same India tech hiring market, different boards and different enrichment:

MIT © The Mine Works