CutShort Jobs Scraper | India Tech, 15 Fields, No Login
Pricing
from $1.20 / 1,000 job scrapeds
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
Maintained by CommunityActor stats
0
Bookmarked
45
Total users
7
Monthly active users
a day ago
Last modified
Categories
Share
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: 1000read 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.
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-jobsandremote-datascience-jobs. - Your own categories, up to 25 per run. Skill pages such as
python-jobswork as well as theremote-*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
| Parameter | Type | Default | What it does |
|---|---|---|---|
searchSlugs | array of strings | empty (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. |
maxJobs | integer, 1 or more | 25 | Cap 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. |
proxyConfiguration | object | Apify proxy (datacenter) | Proxy settings. The default datacenter proxy returned every page in our tests. |
allowResidentialFallback | boolean | true | If 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 weretrue: 738 with no city (remote only) and 177 with cities (remote or office). Withpython-jobs,remote-python-jobsandremote-reactjs-jobs, 100 of 145 jobs were remote; mostpython-jobslistings are office only.salarywas present on all 951 rows, but 448 bands start at0, 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 asUSD 575264-3451582, and internships can show token stipends such asINR 0-12, so check the currency and outliers before you average.companywas on 941 rows (one read-), andcompany_sizeon 723.descriptionkeeps CutShort's HTML (940 rows had tags) and is cut at 4,000 characters (131 rows hit that limit).role_typesvalues seen:full_time(on its own for 844 rows),internship,freelanceandtemporary_full_time. One job can carry several.- Experience can be a fraction, such as
0.5years (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.
| Field | What it is |
|---|---|
job_id | CutShort's job ID. Use it as the unique key. |
title | Job title as posted |
locations | List of cities, empty for most remote only jobs |
remote | true for remote only or remote allowed jobs, false for office only |
skills | List of skill tags |
salary | Currency and range as one string |
experience_min_years | Minimum years of experience |
experience_max_years | Maximum years of experience |
role_types | List such as full_time or internship |
description | Job description in HTML, up to 4,000 characters |
url | Link to the job on cutshort.io |
hiring_for_client | true when a recruiter posts for another company |
scraped_at | When 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.
| Event | Free plan | Bronze (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_resultsanderrorrows. - 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
- Foundit Monster India Jobs
- Hirist Jobs Scraper
- India Jobs MCP
- Naukri Jobs Scraper
- Shine.com Jobs Scraper
- Internshala Scraper
- Instahyre Jobs Scraper
- Indeed Jobs Scraper
- Apna Jobs Scraper
- LinkedIn Jobs Scraper
- Recruiting & Jobs MCP
- Career Site Jobs Scraper
Social media and video
Leads and business directories
Marketing, SEO and reviews
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.

