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

45

Total users

7

Monthly active users

a day ago

Last modified

Share

951 CutShort jobs in 139 seconds: a recorded run with an empty input returned 951 unique tech job listings from 26 CutShort pages

From The Mine Works, makers of Threads Scraper and B2B Leads Finder, with over 140,000 runs across 170+ public actors.

CutShort.io is an Indian hiring platform for startup and tech roles. Unlike most job boards, every CutShort listing carries a tagged skills list, a numeric experience band and a salary band. This actor turns CutShort's public category pages into one clean row per job, ready for a sheet, a database or an ATS.

Why choose this actor?

  • 951 jobs from one run with an almost empty input. On 1 Oct 2026 a run with only maxJobs: 1000 read CutShort's jobs page plus 25 category pages and returned 951 unique jobs in 139 seconds, through Apify's datacenter proxy. No login, no cookies and no browser.
  • Skills and pay as data, not prose. All 951 rows carried a skills list (6 tags at the median), a salary band and numeric minimum and maximum years of experience, so skills demand and pay by seniority become a simple group by.
  • From $1.20 per 1,000 jobs, and duplicates are never charged. Those 26 pages listed 1,216 jobs between them. The 265 that appeared on more than one page were dropped, so each job was delivered and charged once. Empty and failed pages cost nothing.

Run it on Apify

Part of The Mine Works Jobs and hiring family: Foundit Monster India Jobs, Hirist Jobs Scraper, India Jobs MCP, Naukri Jobs Scraper, Shine.com Jobs Scraper, Internshala Scraper.

Try it in one minute

Paste this into the JSON tab of the input page and press Start. It returns 10 jobs in a few seconds: our own scheduled runs of 25 jobs take 6 to 14 seconds on Apify.

{
"maxJobs": 10
}

The actor takes CutShort category slugs, not keywords or full links. A slug is the last part of a CutShort jobs address: for https://cutshort.io/jobs/python-jobs it is python-jobs. Put one or more slugs in searchSlugs, or leave it empty and the actor picks up to 25 categories from CutShort's own jobs page. A path that starts with a slash, such as /jobs/python-jobs, is also accepted. Every run also includes the handful of featured jobs on CutShort's main jobs page, so the first rows of a run come from there.

Apify's free plan includes $5 of credit every month, which covers about 2,770 results at this actor's price.

Copy to your AI assistant

themineworks/cutshort-jobs-scraper on Apify. It reads public CutShort.io job category pages (India startup and tech jobs) and returns one row per job with title, company, company size, locations, skills list, salary band, minimum and maximum years of experience, role types, HTML description and job link. Call ApifyClient("TOKEN").actor("themineworks/cutshort-jobs-scraper").call(run_input={...}), then client.dataset(run["defaultDatasetId"]).list_items().items. Required: nothing. Optional: searchSlugs (array of CutShort category slugs such as "python-jobs" or "remote-golang-jobs", up to 25 used; empty means auto discover up to 25 categories), maxJobs (integer, default 25, about 950 is the practical ceiling per run), proxyConfiguration (default Apify datacenter proxy), allowResidentialFallback (default true). The first rows of every run are the featured jobs from cutshort.io/jobs. remote is true when CutShort marks the job remote only or remote allowed; a remote job with an empty locations list is remote only. A row with a status field is a run note, not a job. Full spec: GET https://api.apify.com/v2/acts/themineworks~cutshort-jobs-scraper/builds/default (Bearer TOKEN), which returns inputSchema and readme. Token: https://console.apify.com/account/integrations

Key features

  • 15 fields per job, 13 of them present on every one of the 951 rows we checked: ID, title, locations, skills, salary band, experience band, role types, description, link, a hiring for a client flag, a remote flag and a timestamp.
  • Auto discovery of categories. With no slugs, the actor reads the category list CutShort publishes on its jobs page (32 categories on 1 Oct 2026) and walks the first 25 of them, such as remote-golang-jobs, remote-flutter-jobs, remote-aws-jobs and remote-datascience-jobs.
  • Your own categories, up to 25 per run. Skill pages such as python-jobs work as well as the remote-* pages. Each category page holds about 40 to 50 jobs.
  • De-duplicated by CutShort's job ID across every page in the run, so a job listed under two categories appears and is charged once.
  • Stops on its own after 3 pages in a row that bring nothing new, so a narrow or exhausted set of slugs does not keep spending.
  • Datacenter proxy by default, with one residential retry for a page that fails, only when your input leaves the proxy setting out.

How to use it

Basic: a broad sample of the board

{
"maxJobs": 200
}

With no slugs, the actor starts at CutShort's jobs page, then walks the categories listed there in CutShort's order until it has 200 jobs.

Several categories at once

{
"searchSlugs": ["python-jobs", "remote-python-jobs", "remote-reactjs-jobs"],
"maxJobs": 500
}

Pages are read in order: CutShort's jobs page first, then your slugs as listed. In our test with python-jobs and remote-python-jobs, the run returned 100 jobs: 9 featured jobs from the jobs page, 50 from python-jobs and 41 more from remote-python-jobs once the 9 jobs it shared with the earlier pages were dropped. A slug that is not a CutShort category page simply returns nothing: jobs-in-bangalore gave 0 jobs.

Weekly skills demand snapshot

{
"maxJobs": 1000
}

Save this as a task and schedule it weekly, for example with the cron 0 6 * * 1. Each run gives about 950 jobs across 25 categories. Count the entries in skills per run to see which technologies startups are hiring for, and split by experience_min_years to see how demand changes with seniority.

Remote roles in a few stacks

{
"searchSlugs": ["remote-golang-jobs", "remote-nodejs-jobs", "remote-reactjs-jobs"],
"maxJobs": 200
}

The remote-* category pages are almost all remote work: a run with no slugs, which reads the featured jobs and 25 remote-* pages, returned 918 jobs on 1 Oct 2026 and 915 of them had remote: true. Filter on remote to keep remote roles from any category. A remote job with an empty locations list is remote only; one with cities listed can also be done from those offices.

Startup hiring signals

{
"searchSlugs": ["remote-startup-jobs", "remote-machine-learning-ml-jobs", "remote-data-analytics-jobs"],
"maxJobs": 300
}

Run it weekly and count open roles per company. A company that opens several senior roles at once is a growth or funding signal. The actor has no memory between runs, so keep the job_id values you have already seen and compare.

Recruiter sourcing by skill and seniority

{
"searchSlugs": ["python-jobs", "remote-django-jobs"],
"maxJobs": 150
}

Filter the output to rows whose skills contain your target technology and whose experience band fits, then group by company for a list of employers hiring for it now. hiring_for_client: true marks a recruiter or agency posting for another company.

Input parameters

ParameterTypeDefaultWhat it does
searchSlugsarray of stringsempty (auto discover)CutShort category slugs, such as python-jobs or remote-golang-jobs. Up to 25 are used. Leave empty to walk up to 25 categories listed on CutShort's jobs page.
maxJobsinteger, 1 or more25Cap on jobs delivered across all pages. There is no hard maximum, but one run reads at most 26 pages, which gave 951 jobs in our full test.
proxyConfigurationobjectApify proxy (datacenter)Proxy settings. The default datacenter proxy returned every page in our tests.
allowResidentialFallbackbooleantrueIf a page fails on the datacenter proxy, retry it once on Indian residential proxy. This only applies when the input has no proxyConfiguration. Set false to stay on datacenter.

The input form in the Apify Console starts with remote-golang-jobs and maxJobs: 10 filled in, and it always sends a proxy setting, so form runs use exactly the proxy you see there and skip the residential retry. Runs started through the API or an AI assistant get only what you send, plus the defaults above.

What data do you get?

One row per job. A field CutShort leaves empty for a job is left out of that row rather than sent as null.

The job: job_id, title (CutShort's headline), role_types, description and url, the link to the job on cutshort.io.

The employer: company, company_size as CutShort's band (for example 0-20, 20-100, 100-1000 or 5000+), and hiring_for_client, which is true when a recruiter or agency posts for another company.

Requirements and pay: skills (CutShort's tags, exactly as written, such as NodeJS (Node.js)), experience_min_years, experience_max_years and salary as one string with currency and range, such as INR 1500000-5000000.

Place: locations (every city listed) and remote, which is true when CutShort marks the job remote only or remote allowed alongside the listed offices, and false for office only jobs.

Timing: scraped_at, when the row was collected.

Run notes: if a run delivers no jobs at all, it saves one row with status: "no_results" and a short note. If the run hits an unexpected error, it saves a row with status: "error" and the run is marked failed. Neither row is charged.

What we saw in 951 rows on 1 Oct 2026, so you can plan for it:

  • remote: in a run with the same input on 1 Oct 2026 after the remote fix (918 jobs), 915 rows were true: 738 with no city (remote only) and 177 with cities (remote or office). With python-jobs, remote-python-jobs and remote-reactjs-jobs, 100 of 145 jobs were remote; most python-jobs listings are office only.
  • salary was present on all 951 rows, but 448 bands start at 0, which is how CutShort shows an "up to" figure. Amounts are CutShort's stored numbers in the currency shown: 924 rows were INR, 24 USD, 2 EUR and 1 GBP. Most of the USD bands carry rupee sized numbers, such as USD 575264-3451582, and internships can show token stipends such as INR 0-12, so check the currency and outliers before you average.
  • company was on 941 rows (one read -), and company_size on 723.
  • description keeps CutShort's HTML (940 rows had tags) and is cut at 4,000 characters (131 rows hit that limit).
  • role_types values seen: full_time (on its own for 844 rows), internship, freelance and temporary_full_time. One job can carry several.
  • Experience can be a fraction, such as 0.5 years (11 rows).
  • Rows carry no posting date. Each run reads what CutShort shows at that moment.

Stable fields for automations

These 13 fields were present in every one of the 951 rows we sampled. Their names will not change, so a Sheet, Zap, Make scenario or n8n flow can map to them safely.

FieldWhat it is
job_idCutShort's job ID. Use it as the unique key.
titleJob title as posted
locationsList of cities, empty for most remote only jobs
remotetrue for remote only or remote allowed jobs, false for office only
skillsList of skill tags
salaryCurrency and range as one string
experience_min_yearsMinimum years of experience
experience_max_yearsMaximum years of experience
role_typesList such as full_time or internship
descriptionJob description in HTML, up to 4,000 characters
urlLink to the job on cutshort.io
hiring_for_clienttrue when a recruiter posts for another company
scraped_atWhen the row was collected, ISO 8601 in UTC

Output examples

Real rows from our 1 Oct 2026 test run. Descriptions are cut to their first words and long skills lists are trimmed.

A full time role in Bengaluru that also allows remote work

{
"job_id": "608742f847a14f0b819b8f4a",
"title": "Technical Lead",
"company": "FirstPrinciples",
"company_size": "20-100",
"locations": ["Bengaluru (Bangalore)"],
"remote": true,
"skills": ["Technical Architecture", "Technical Lead", "Tech lead", "Engineering Manager", "Engineering Management", "Engineering head"],
"salary": "INR 1500000-5000000",
"experience_min_years": 10,
"experience_max_years": 14,
"role_types": ["full_time"],
"description": "<p><span style=\"text-decoration:underline\"><strong>About First Principles</strong></span></p>\n<p>We are a Tech Holding Company and our portfolio companies gener...",
"url": "https://cutshort.io/job/Technical-Lead-Bengaluru-Bangalore-FirstPrinciples-CtBU419k",
"hiring_for_client": false,
"scraped_at": "2026-10-01T13:30:36.947Z"
}

A remote only job posted by a recruiter, from a remote-* page

{
"job_id": "6a5f41d13928853b12d0cd47",
"title": "Golang Backend Engineer",
"company": "A US-based cybersecurity startup",
"locations": [],
"remote": true,
"skills": ["Go Programming (Golang)", "Amazon Web Services (AWS)"],
"salary": "INR 1000000-5000000",
"experience_min_years": 1,
"experience_max_years": 5,
"role_types": ["full_time"],
"description": "<p><strong>About the company</strong></p><p>The client is a US-based cybersecurity startup prevents, detects, and responds to software supply chain attacks by a...",
"url": "https://cutshort.io/job/Golang-Backend-Engineer-Cutshort-Lightning-Ahk5sCDT",
"hiring_for_client": true,
"scraped_at": "2026-10-01T13:30:45.873Z"
}

remote: true with an empty locations list is CutShort's "remote only".

A paid internship with a fractional experience band

{
"job_id": "631df6b81482a902575c74f5",
"title": "Full Stack Developer",
"company": "Arishti CyberTech Private Limited",
"company_size": "0-20",
"locations": [],
"remote": true,
"skills": ["NodeJS (Node.js)", "React.js", "Angular (2+)", "AngularJS (1.x)", "MongoDB", "Express"],
"salary": "INR 96000-120000",
"experience_min_years": 0.5,
"experience_max_years": 1,
"role_types": ["internship"],
"description": "<p><strong>Roles and Responsibilities:</strong></p>\n<ul>\n<li>Understand product requirements and be able to quickly turn around a functional prototype for inter...",
"url": "https://cutshort.io/job/Full-Stack-Developer-Arishti-CyberTech-Private-Limited-WuJPoHpj",
"hiring_for_client": false,
"scraped_at": "2026-10-01T13:30:49.850Z"
}

A remote role whose salary is labelled USD

{
"job_id": "619e28923205b20bc301fcd6",
"title": "Senior Level Blockchain Developer (Solidity)",
"company": "Torum Technology Sdn Bhd",
"company_size": "20-100",
"locations": [],
"remote": true,
"skills": ["Blockchain", "Solidity", "Cryptography", "Smart Contracts"],
"salary": "USD 932836-5597015",
"experience_min_years": 2,
"experience_max_years": 5,
"role_types": ["full_time"],
"description": "<p>Are you passionate in coding, art and blockchain? Do you wish to face challenges ahead, develop and deliver features that will be extraordinary tow...",
"url": "https://cutshort.io/job/Senior-Level-Blockchain-Developer-Solidity-Torum-Technology-Sdn-Bhd-pgEn7qAg",
"hiring_for_client": false,
"scraped_at": "2026-10-01T14:57:28.157Z"
}

The numbers in this band are rupee sized although the label says USD. That is how CutShort stores it, so check the currency before you compare pay across rows.

Pricing

Pay per event: you are charged for each job saved to your dataset, plus Apify's standard start event. The price per job drops as your Apify plan goes up.

EventFree planBronze (Starter)Silver (Scale)Gold and above (Business)
job-scraped, per job$0.0018$0.00155$0.00135$0.0012
Per 1,000 jobs$1.80$1.55$1.35$1.20
apify-actor-start, per run$0.005 per GB of memory$0.005 per GB$0.005 per GB$0.005 per GB
  • Start fee: $0.005 per GB of run memory, with a minimum of one event. At the default 512 MB that is $0.005 per run. At 2 GB it would be $0.01. The actor needs no more than the default.
  • Never charged: jobs that already appeared on an earlier page of the same run, empty pages, failed pages, slugs that are not CutShort categories, and the no_results and error rows.
  • Spending cap: if you set a maximum cost per run in Apify, the actor stops adding jobs once that budget is used, so you never receive rows you were not charged for and never pay past your cap.
  • No price change is scheduled. The current prices have applied since 14 Sep 2026.

Worked examples on the Free plan: 500 jobs cost $0.90 plus the $0.005 start fee. On Gold, a full 951 job run costs about $1.14 plus $0.005.

FAQ

What is CutShort? CutShort.io is an Indian hiring platform focused on startups and tech roles: engineering, data, product, design and some growth and operations jobs. Its listings are tagged with skills, an experience band and a salary band, which is what makes it useful as data.

How many jobs can I get from one run? About 950. A run reads CutShort's jobs page plus at most 25 category pages, one page each, and each page holds about 40 to 50 jobs. Our full run on 1 Oct 2026 returned 951 unique jobs from 1,216 listings. With your own slugs, expect up to about 50 per slug plus the featured jobs, minus overlap. For more, run different sets of slugs.

Can I search by keyword, company or city? Not directly. The actor reads CutShort category pages, so you choose slugs, not free text. Skill pages such as python-jobs and the remote-* pages work. A city address such as jobs-in-bangalore returned no jobs in our test. To find slugs, browse cutshort.io/jobs and copy the last part of the address. To narrow by company or city, filter the output on company or locations.

Why are the first rows not from my category? Every run starts at CutShort's main jobs page, which features a few jobs (9 on 1 Oct 2026), and those are delivered first. They are real jobs and charged like any other. If you only want your categories, drop rows whose skills do not match, or set maxJobs a little higher to leave room for them.

How fresh is the data? Each run reads CutShort live when it starts. There is no cache. Rows do not carry a posting date, so record scraped_at and compare runs to see what is new.

Do I need a CutShort account, cookies or an API key? No. The actor reads the same public pages any visitor sees, with no login. You only need an Apify account.

Do I need a proxy? No setup is needed. The actor uses Apify's datacenter proxy by default, and every page came back on it in our tests. If you call it through the API without a proxy setting, a page that fails gets one retry on an Indian residential proxy; set allowResidentialFallback to false to prevent that.

Can I find remote jobs? Yes. Scrape the remote-* slugs, or any category, and keep rows with remote: true. CutShort has three settings: remote only, remote allowed alongside the listed offices, and office only; the first two give true. To keep only remote only jobs, also require an empty locations list.

Is salary always present? In our 951 rows it was. Many bands start at 0, CutShort's way of showing "up to". Most USD bands carry rupee sized numbers, so check the currency and outliers before you average.

What happens if nothing is found? If a run delivers no jobs at all, it saves one status: "no_results" row and charges nothing. A slug with no jobs is skipped, and after 3 pages in a row with nothing new the run stops.

Can I run it on a schedule? Yes. Save your input as a task, then add a schedule in Apify Console under Schedules, for example weekly on Monday at 06:00. The actor does not remember earlier runs, so the same open jobs come back each time: compare job_id values downstream to keep only new ones.

Which formats can I export? JSON, CSV, Excel, XML, RSS or HTML from the run's Storage tab, or through the Apify API. In CSV and Excel, list fields such as skills are split into numbered columns (skills/0, skills/1 and so on).

Can I use it from Claude, ChatGPT or another AI assistant?

  • Connector URL: https://mcp.apify.com/?tools=themineworks/cutshort-jobs-scraper.
  • Claude: Settings > Connectors > Add custom connector, paste the URL, sign in with Apify.
  • ChatGPT: developer mode, add an MCP connector with the URL, sign in with Apify.
  • Cursor or VS Code: add it as an HTTP MCP server with that URL.
  • Claude Code: claude mcp add -t http cutshort-jobs-scraper "https://mcp.apify.com/?tools=themineworks/cutshort-jobs-scraper".

Is it legal to scrape CutShort? The actor collects only public job listings, the same pages anyone can view without logging in. It collects nothing about job seekers. You are responsible for how you use the data, including CutShort's terms and data protection law such as GDPR, CCPA and India's DPDP Act. This is general information, not legal advice.

Integrations

  • Google Sheets: send each run's dataset to a sheet with Apify's Google Sheets integration.
  • Make, Zapier and n8n: start a run and read the jobs with the official Apify modules and nodes.
  • Webhooks: have Apify call your URL when a run finishes, then fetch the dataset.
  • API: start runs and read results over HTTP, or with the Python and JavaScript clients.
  • MCP clients: Claude, ChatGPT, Cursor and other MCP clients can call the actor through https://mcp.apify.com.

More from The Mine Works

Jobs and hiring

Social media and video

Leads and business directories

Marketing, SEO and reviews

LinkedIn

Real estate

Science, health and government data

E-commerce and marketplaces

Company and business data

Food and local services

Developer and AI tools

More tools

Support

Found a bug or need a field we do not return? Open an issue in the Issues tab. Want a job board or data source we do not cover yet? Email dmineworks@gmail.com. A guide for this actor also lives at themineworks.com.

CutShort Jobs Scraper turns CutShort's public category pages into clean, de-duplicated job rows with skills, salary bands and experience ranges, from $1.20 per 1,000 jobs.