Cutshort startup & tech jobs as JSON API
Cutshort Jobs Scraper is a pay-per-record Apify Actor by Daemon Data that returns Cutshort (cutshort.io) India startup and tech jobs with salary range, experience, skills, remote policy, company profile and full description as JSON, CSV or Excel. It costs $0.0008 per job with the default options ($0.80 per 1,000); no login to the source site and no proxy or browser to set up on your side, and the same input runs from the Apify console, one REST call, Python, Node.js, n8n or an AI assistant through MCP.
Daemon Data Cutshort Jobs Scraper on Apify Listing as plain text
Output fields
The most useful top-level fields with values from a real record; the full list is id, url, title, company, companyUrl, hiringForClient, locations, locationsText, remotePolicy, remote, roleType, skills, experienceMin, experienceMax, experienceText, salaryMin, salaryMax, salaryCurrency, salaryPeriod, salaryText, salaryHidden, datePosted, companyType, companySize, companyStage, companyFounded, companyWebsite, companyLinkedin, companyLogo, companyDescription, description, category, scrapedAt. Per-field notes and the OpenAPI definition are on the Apify API page.
| Field | Type | Example |
|---|---|---|
id | string | "6ae577c062269960ba5d222d" |
url | string | "https://cutshort.io/job/Python-Data-Engineer-Pune-Bengaluru-Bangal... |
title | string | "Python Data Engineer" |
company | string | "Wissen Technology" |
companyUrl | string | "https://cutshort.io/company/wissen-technology-79-09J2iH1M" |
hiringForClient | boolean | false |
locations | array | ["Pune", "Bengaluru (Bangalore)", "Mumbai"] |
locationsText | string | "Pune, Bengaluru (Bangalore), Mumbai" |
remotePolicy | string | "remote_not_okay" |
remote | string | "onsite" |
roleType | string | "full_time" |
skills | array | ["Python", "databricks", "Apache Airflow", "PySpark", "Delta Lake",... |
experienceMin | number | 4 |
experienceMax | number | 8 |
experienceText | string | "4 - 8 years" |
Input and how to call it
Example input. Fields and pricing were checked against the public listing on 2026-11-09; this build does not run paid example searches.
{
"categories": [
"Python"
],
"locations": [
"Bengaluru"
],
"maxResults": 50
}
One HTTP call starts a run, waits for it and returns the records (token from console.apify.com):
curl -X POST "https://api.apify.com/v2/acts/data_daemon~cutshort-jobs-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"categories": ["Python"], "locations": ["Bengaluru"], "maxResults": 50}'
Python: ApifyClient(token).actor("data_daemon/cutshort-jobs-scraper").call(run_input=...). Python example · Node.js example · n8n workflow.
AI assistant (MCP): add the remote server https://mcp.apify.com/?tools=data_daemon/cutshort-jobs-scraper with header Authorization: Bearer YOUR_APIFY_TOKEN in Claude, ChatGPT, Cursor or VS Code and ask for the data in plain words.
All input fields
| Field | Type | Meaning |
|---|---|---|
categories | array | Cutshort job pages to read, newest first: a skill or role (Python, React.js, DevOps, Data Science, Sales, Product Management), a page name (python-jobs, remote-python-jobs, python-jobs-in-mumbai) or a page URL. Python jobs in Mumbai reads the city page. Empty = the whole board (startup-jobs, about 45,000 live jobs). |
locations | array | City names, e.g. Bengaluru (or Bangalore), Mumbai, Delhi, Hyderabad, Pune, Chennai, Noida, Gurgaon, Kochi. For the 14 cities Cutshort has pages for, the city page is read directly; every job is also checked against its own location list. Delhi includes the NCR (Gurgaon, Noida, Ghaziabad, Faridabad). Empty = all of India and remote. |
keywords | array | Words matched against the job title and skills, e.g. senior, django, lead, intern. Empty = all jobs. Jobs without a match are not charged. |
remote | string | remote keeps jobs marked remote-only or remote-okay; onsite keeps office-only jobs. With no categories, remote reads Cutshort's remote-jobs page. |
roleType | string | Full-time jobs, internships or both. |
minExperience | integer | Keep jobs whose experience range reaches this many years (e.g. 3 keeps 2 - 5 years, drops 0 - 2 years). |
maxExperience | integer | Keep jobs whose experience range starts at or below this many years (e.g. 2 keeps 0 - 2 and 1 - 4, drops 5 - 8). |
minSalary | integer | Keep jobs whose shown annual salary range reaches this amount, e.g. 1500000 for 15 LPA. Jobs that hide their salary (Best in industry) or show a monthly figure are left out when this is set. |
postedWithinDays | integer | Keep jobs posted in the last N days (datePosted). Pages are newest first, so reading stops once a page is older than the window. |
includeDescription | boolean | Full job description as text (no extra request; it comes with the listing). |
includeCompany | boolean | Company type, size, stage, founding year, website, LinkedIn page, logo and description. |
maxResults | integer | Stop after this many saved jobs (default 50, about $0.04). 0 = no cap: each Cutshort page serves its newest few hundred to few thousand jobs (about 2,400 on the whole-board page, Oct 2026). |
onlyNewSinceLastRun | boolean | Remember delivered job ids in a key-value store named cutshort-jobs-state and skip them next time (not charged). |
stateName | string | Name of the only-new memory. By default it follows categories, locations, keywords and the remote setting. |
skipIds | array | Cutshort job ids you already have (the 24-character id). Neither saved nor charged. |
Price
$0.0008 per job ($0.80 per 1,000); $0.001 per run. List prices for Apify Free and Starter plans; Scale and Business plans pay 15% to 30% less.
| Event | Price | Per 1,000 | Charged when |
|---|---|---|---|
| Job | $0.0008 | $0.80 | One Cutshort job saved to the dataset with company profile, locations, remote policy, skills, experience range, salary range as shown, posting date and full description. Jobs left out by filters, only-new mode or skipIds are never charged. |
| Actor Start | $0.001 | Charged when the Actor starts running. Number of events charged depends on Actor memory (one event per GB, minimum one event). |
Cost example: 50 jobs with default options cost $0.041, including any start fee. This is an illustrative record count; set explicit row and total-charge caps for your run. Apify's free plan includes $5 of usage a month, about 6,250 jobs before start fees; the Actor's own compute is included in the per-record price, and records skipped by filters, de-duplication or only-new mode are not charged.
Ready-made example pages
Saved inputs you can run with one click on Apify (Examples tab); each has its own page:
- New startup and tech jobs on Cutshort this week: Get new Cutshort jobs as JSON via API: the newest startup and tech jobs posted on Cutshort in the last 7 days, across all roles and cities. Each row: company with size, stage and website, skills, experience range, salary
{"postedWithinDays": 7, "includeDescription": true, "includeCompany": true, "maxResults": 200} - Python developer jobs in India posted this month (Cutshort): Get Python developer jobs as JSON via API: Python roles at Indian startups and product companies posted on Cutshort in the last 30 days, newest first (some also ask for Django or FastAPI). Each row: company with size and
{"categories": ["Python"], "postedWithinDays": 30, "includeDescription": true, "includeCompany": true, "maxResults": 100}
Alternatives, honestly
| Option | What it gives you | Where it falls short for this job |
|---|---|---|
| Cutshort website | Search and apply as a candidate; recruiter plans for employers | No export or job API; one job page at a time |
| Instahyre or Hirist APIs (same publisher) | Other India tech boards | Different coverage; Cutshort is strongest for funded startups and shows salary ranges on most jobs |
| Other Cutshort Actors on Apify Store | Same board | Compare price per 1,000, company-profile fields, salary range and only-new mode |