CutShort Jobs Scraper avatar

CutShort Jobs Scraper

Pricing

from $4.00 / 1,000 job scrapeds

Go to Apify Store
CutShort Jobs Scraper

CutShort Jobs Scraper

Scrape public CutShort.io India tech jobs by keyword, location, skills, experience or CutShort hub and job URLs. Returns title, company, salary, skills, experience, location, posted date and description, with no login.

Pricing

from $4.00 / 1,000 job scrapeds

Rating

0.0

(0)

Developer

Khadin Akbar

Khadin Akbar

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

2

Monthly active users

20 days ago

Last modified

Share

What is CutShort Jobs Scraper?

CutShort Jobs Scraper extracts public tech jobs from CutShort.io, the Indian startup and tech hiring platform, into one dataset row per job. Each row returns the title, company with its type, size and funding stage, location, experience band, public salary text with a parsed rupee range, skills, employment type, remote policy, posted date and job link, plus the full description when you keep detail enrichment on. Recruiters, talent-market researchers, salary benchmarkers and AI agents use it to pull India tech roles by keyword, city, skill or CutShort URL with no CutShort login.

Why recruiters and researchers use it

  • Startup context on every row. companyType, companySize and companyStage (for example Product, 100-500, Bootstrapped or Profitable) let you segment roles by the kind of company hiring.
  • Salary you can sort. salaryText keeps CutShort's wording, and listing rows add salaryMin, salaryMax and salaryCurrency as numbers.
  • Skills as a clean list. skills is an array such as Flutter, Firebase and Dart, ready for skill-demand counts.
  • Keyword, city and skill routing. keywords, skills and location are mapped onto CutShort's public job hubs, such as python-jobs-in-pune.
  • Experience and remote filters. minExperience, maxExperience and remoteOnly trim the dataset to the roles you want.
  • Provenance per row. hubSlug, sourceApiUrl and scrapedAt show exactly where and when each job was read.

Best fit for this Actor

  • Best fit for India-focused tech and startup roles listed on CutShort job hubs.
  • Use startUrls when you already have a cutshort.io/jobs/... hub or cutshort.io/job/... posting link.
  • Use enrichDetails: false for fast listing-card rows, and keep it on when you want descriptions.
  • When you also want roles from a broad general India job board, continue with Naukri Jobs Scraper and merge on title and company.

Example workflow: a Pune mobile-developer salary benchmark

A talent partner at a Pune product startup starts with a hiring plan for two Flutter developers. She runs keywords: ["ios developer"] and skills: ["flutter"] with location: "pune", maxExperience: 4 and enrichDetails: false. The dataset returns rows with salaryMin, salaryMax, experience, companyStage and skills. She exports them to a sheet, compares bands for bootstrapped versus funded companies, then sets the offer range. She schedules the same input monthly to watch how the band moves.

Input

{
"keywords": ["frontend developer"],
"location": "bangalore",
"maxJobs": 25,
"maxPagesPerHub": 1,
"maxExperience": 5,
"remoteOnly": false,
"enrichDetails": true
}

Start from known CutShort URLs instead:

{
"startUrls": ["https://cutshort.io/jobs/ios-developer-jobs"],
"maxJobs": 20,
"enrichDetails": false
}
FieldTypeWhat it controls
keywordsarray of stringsJob titles or categories such as frontend developer or python, mapped to public CutShort hubs.
skillsarray of stringsSkill keywords such as golang or devops, each mapped to a skill hub when one exists.
locationstringIndia city or region such as bangalore, pune, hyderabad or delhi, combined with keywords into city hubs.
startUrlsarray of stringsPublic cutshort.io/jobs/{hub} or cutshort.io/job/{job} URLs, processed first.
maxJobsintegerTotal job rows saved across all hubs, 1 to 500. Default 50.
maxPagesPerHubintegerHub pages read per hub, about 50 jobs each, 1 to 20. Default 3.
minExperience, maxExperienceintegerKeep jobs whose experience band fits these years.
remoteOnlybooleanKeep only jobs CutShort marks as remote. Default false.
enrichDetailsbooleanRead each job's detail page for the description. Default true.
useApifyProxybooleanReserved routing option; default false works for public CutShort data.

Output

One row per job. A real listing row from the ios-developer-jobs hub:

{
"jobId": "6aab8dac2712769a26489b73",
"title": "Flutter Developer",
"companyName": "Zoop.one",
"companyType": "Product",
"companySize": "100-500",
"companyStage": "Bootstrapped",
"location": "Pune",
"locations": ["Pune"],
"experience": "1 - 3 years",
"experienceMin": 1,
"experienceMax": 3,
"salaryText": "₹6L - ₹8L / yr",
"salaryMin": 600000,
"salaryMax": 800000,
"salaryCurrency": "INR",
"skills": ["Flutter", "riverpod", "Firebase", "iOS App Development", "Android Development", "DART"],
"employmentTypes": ["full_time"],
"remoteType": "remote_not_okay",
"isRemote": false,
"jobUrl": "https://cutshort.io/job/Flutter-Developer-Pune-Zoop-one-r8mwkhRw",
"postedAt": "2026-09-17T06:50:20.959Z",
"postedLabel": "Posted 17 Sep 2026",
"descriptionHtml": null,
"descriptionText": null,
"hubSlug": "ios-developer-jobs",
"sourceApiUrl": "https://cutshort.io/backend-api/webpage/jobs/ios-developer-jobs?page=1",
"scrapedAt": "2026-09-17T13:25:20.640Z"
}

With enrichDetails on, descriptionHtml and descriptionText carry the full job description, for example a WordPress Developer role's responsibilities and requirements.

FieldWhat it contains
jobId, title, jobUrlJob identity and direct CutShort link
companyName, companyId, companyType, companySize, companyStageHiring company and its profile
location, locations, remoteType, isRemoteWhere the role is based and its remote policy
experience, experienceMin, experienceMaxExperience band as text and numbers
salaryText, salaryMin, salaryMax, salaryCurrencyPublic salary text and parsed range
skills, employmentTypesSkill tags and role types such as full_time
postedAt, postedLabelPosting time
descriptionHtml, descriptionTextFull description when enrichDetails is on
hubSlug, sourceApiUrl, scrapedAtSource hub, source address and collection time

Every run also writes OUTPUT and RUN_SUMMARY to the key-value store with an outcome such as COMPLETE, PARTIAL or VALID_EMPTY.

Pricing

This Actor uses Pay per event with Apify platform usage included in the event price. You pay one Job scraped event for each validated job row saved and one Actor Start event per run. Filtered-out jobs and runs that find no matching jobs add no Job scraped events. The live Pricing tab on this page shows the current event prices.

Worked example in words: maxJobs: 25 with matching hubs saves up to 25 rows, so the run costs at most 25 Job scraped events plus one start event. maxJobs doubles as your cost ceiling.

Use with AI agents (MCP)

Connect the Actor to an MCP client through Apify MCP and ask:

Find up to 15 public CutShort jobs for backend developers in Bangalore with at most 4 years of experience. Return title, company, salaryText, skills and jobUrl, and tell me the run outcome.

Agent checklist:

  1. Put role words in keywords, the city in location, and set maxJobs close to the request.
  2. Read rows with get-dataset-items; keep jobUrl and scrapedAt as provenance.
  3. Read OUTPUT.outcome to tell a complete result from a valid empty one.
  4. Scope note: rows come from CutShort's public hubs, and cost scales with saved rows.

API example

curl -X POST "https://api.apify.com/v2/acts/khadinakbar~cutshort-jobs-scraper/run-sync-get-dataset-items?token=YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"keywords": ["python"], "location": "pune", "maxJobs": 10, "enrichDetails": false}'
Your next stepUseWhy
When you want broader India job-board coverageNaukri Jobs ScraperLarge general India listings to merge with CutShort roles
When you track funded startups beyond IndiaWellfound Jobs ScraperStartup jobs with company context

Best results

Starting situationHelpful actionExpected outcome
You know the CutShort hubPaste it into startUrlsExactly that hub's jobs
Salary benchmarkingSet enrichDetails: falseListing rows with parsed salaryMin and salaryMax
Reading job contentKeep enrichDetails: truedescriptionText on each row
Junior hiringSet maxExperienceOnly bands that start within your range
Remote rolesSet remoteOnly: trueJobs CutShort marks as remote
A quick first lookmaxPagesPerHub: 1 and a small maxJobsA fast sample before a deeper pull

Builder's note

I found that CutShort organizes public jobs into hubs by role, skill and city, and those hubs are stable, so I built keyword input to map onto hubs rather than guess at free-text search results. I kept detail enrichment as a switch because salary research needs speed across many listings, while job-content analysis needs the full description.

FAQ

Do I need a CutShort account?

No. The Actor reads public CutShort job hubs and job pages.

CutShort hubs group related titles, so a hub can include roles such as WordPress or UI developers. Filter on title or skills for a narrower set.

Can I scrape one job posting?

Yes. Put the cutshort.io/job/... URL in startUrls.

Responsible use

This Actor collects publicly visible CutShort job postings. Use the data in line with CutShort's terms, employment and privacy laws, and your organization's data policies. CutShort is a trademark of its owner; this independent Actor is not affiliated with or endorsed by CutShort.