Cutshort Jobs Scraper
Pricing
from $0.03 / 1,000 job saveds
Cutshort Jobs Scraper
Scrape public Cutshort job listings with companies, locations, skills, salary, experience, URLs, and descriptions for recruiting research.
Pricing
from $0.03 / 1,000 job saveds
Rating
0.0
(0)
Developer
Automation Lab
Maintained by CommunityActor stats
0
Bookmarked
45
Total users
4
Monthly active users
15 days ago
Last modified
Categories
Share
Extract public job listings from Cutshort.io category and search pages. The actor reads server-rendered Cutshort job data and saves structured records with titles, companies, locations, skills, salary ranges, experience ranges, URLs, and descriptions.
Use it for recruiting intelligence, India tech hiring research, salary monitoring, agency lead sourcing, and job-market dashboards.
What does Cutshort Jobs Scraper do?
Cutshort Jobs Scraper turns public Cutshort job pages into clean Apify datasets.
It can scrape pages such as:
https://cutshort.io/jobs/reactjs-jobshttps://cutshort.io/jobs/python-jobshttps://cutshort.io/jobs/remote-jobs- any other public Cutshort
/jobs/...page that includes job listings
The actor works without a Cutshort account for publicly visible listings. It reads the first server-rendered page for each supplied category; maxItems limits saved rows across URLs, but does not fetch more pages of a category. Supply multiple categories for broader coverage.
Who is it for?
Recruiters use it to monitor active technology hiring in India.
Staffing agencies use it to discover companies hiring for specific skills.
Job-board operators use it to enrich job inventory and trend reports.
Labor-market analysts use it to track skill demand, remote work, and salary bands.
Founders and sales teams use it to identify companies with open roles and growth signals.
Why use this actor?
- 🧭 Scrapes public Cutshort category pages directly
- 🧑💻 Captures skills and tech-stack signals
- 💰 Extracts public salary ranges when Cutshort exposes them
- 📍 Saves locations and remote-work mode
- 🏢 Includes company names and company links when available
- 📝 Optionally includes public job descriptions
- ⚡ Uses HTTP extraction, not a browser, for fast and low-cost runs
What data can you extract?
| Field | Description |
|---|---|
title | Job title |
url | Public Cutshort job URL |
jobId | Cutshort job identifier when present |
company | Company name |
companyUrl | Public company/profile URL when available |
locations | Location array |
locationText | Display location text |
remoteType | Remote mode from Cutshort |
roleTypes | Full-time, internship, contract, or other role tags |
skills | Skills and technologies listed on the job |
salaryText | Human-readable salary range |
salaryMin | Numeric salary lower bound when public |
salaryMax | Numeric salary upper bound when public |
salaryCurrency | Salary currency code |
experienceMin | Minimum experience |
experienceMax | Maximum experience |
descriptionText | Clean text job description |
descriptionHtml | Original public HTML description |
sourceUrl | Category/search URL that produced the job |
sourceSlug | Cutshort slug such as reactjs-jobs |
scrapedAt | UTC scrape timestamp |
How much does it cost to scrape Cutshort jobs?
The actor uses pay-per-event pricing.
- A small start event is charged once per run.
- A per-job event is charged only for saved dataset rows.
Formula-derived pricing is extremely low for this HTTP actor; the platform-ready BRONZE price is about $0.042 per 1,000 saved jobs, with higher-tier discounts. FREE-tier runs use about $0.048 per 1,000 saved jobs; DIAMOND-tier runs use about $0.012 per 1,000 saved jobs.
How to use Cutshort Jobs Scraper
- Open the actor on Apify.
- Add one or more Cutshort job category URLs.
- Optionally add category slugs such as
reactjs-jobs. - Set the maximum number of jobs.
- Run the actor.
- Export the dataset as JSON, CSV, Excel, or via API.
Input options
Start URLs
Use full Cutshort URLs.
[{ "url": "https://cutshort.io/jobs/reactjs-jobs" }]
Search/category slugs
Use this when you only know the last part of a Cutshort URL.
["reactjs-jobs", "python-jobs"]
The actor converts the slug into a Cutshort jobs URL.
Maximum jobs
Use maxItems to stop after a fixed number of saved listings across all supplied URLs. Each category currently exposes up to roughly 50 jobs on its first server-rendered page; a larger limit does not paginate a single category.
Include description
Set includeDescription to false if you only need short listing-level fields.
Input example
{"startUrls": [{ "url": "https://cutshort.io/jobs/reactjs-jobs" }],"searchSlugs": ["python-jobs"],"maxItems": 50,"includeDescription": true}
Output example
{"title": "Full Stack Developer","url": "https://cutshort.io/job/Full-Stack-Developer-example","jobId": "abc123","company": "Example Technologies","companyUrl": "https://cutshort.io/jobs-at-example-technologies","locations": ["Bengaluru (Bangalore)"],"locationText": "Bengaluru (Bangalore)","remoteType": "remote_not_okay","roleTypes": ["full_time"],"skills": ["React.js", "Node.js", "TypeScript"],"salaryText": "₹10L - ₹20L / yr","salaryMin": 1000000,"salaryMax": 2000000,"salaryCurrency": "INR","experienceMin": 2,"experienceMax": 6,"descriptionText": "Public job description text...","sourceUrl": "https://cutshort.io/jobs/reactjs-jobs","sourceSlug": "reactjs-jobs","scrapedAt": "2026-06-08T08:00:00.000Z"}
Tips for better results
- Use specific skill slugs for targeted sourcing.
- Run multiple smaller skill pages instead of one broad page when building dashboards.
- Keep
maxItemslow during testing. - Disable descriptions when you only need counts, skills, companies, and salaries.
- Deduplicate downstream by
jobIdorurl.
Integrations
You can connect the dataset to:
- Google Sheets for recruiting dashboards
- Airtable for agency lead tracking
- BigQuery or Snowflake for labor-market analysis
- Slack alerts for new jobs in a tracked skill
- CRM tools for company hiring-signal enrichment
API usage with Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('automation-lab/cutshort-jobs-scraper').call({searchSlugs: ['reactjs-jobs'],maxItems: 25,includeDescription: true,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
API usage with Python
from apify_client import ApifyClientclient = ApifyClient('MY-APIFY-TOKEN')run = client.actor('automation-lab/cutshort-jobs-scraper').call(run_input={'searchSlugs': ['reactjs-jobs'],'maxItems': 25,'includeDescription': True,})items = client.dataset(run['defaultDatasetId']).list_items().itemsprint(items)
API usage with cURL
curl -X POST 'https://api.apify.com/v2/acts/automation-lab~cutshort-jobs-scraper/runs?token=MY-APIFY-TOKEN' \-H 'Content-Type: application/json' \-d '{"searchSlugs":["reactjs-jobs"],"maxItems":25,"includeDescription":true}'
MCP usage
Use Apify MCP to run this actor from Claude Desktop or Claude Code.
MCP server URL:
https://mcp.apify.com/?tools=automation-lab/cutshort-jobs-scraper
Claude Code setup:
$claude mcp add --transport http apify-cutshort-jobs "https://mcp.apify.com/?tools=automation-lab/cutshort-jobs-scraper"
Claude Desktop JSON config (remote HTTP MCP):
{"mcpServers": {"apify-cutshort-jobs": {"url": "https://mcp.apify.com/?tools=automation-lab/cutshort-jobs-scraper"}}}
Cursor: add the same remote HTTP MCP URL in Cursor Settings → MCP. VS Code: add the same remote HTTP MCP URL in the MCP server configuration.
Example prompts:
- "Scrape 25 React.js jobs from Cutshort and summarize the most common skills."
- "Find public Cutshort jobs for Python and group them by salary range."
- "Monitor this Cutshort category and show companies hiring remotely."
Data quality notes
Cutshort controls which fields are public. Some listings may omit salary, experience, locations, or company details. The actor keeps missing optional fields as null or empty arrays instead of inventing values. Only listings with a real Cutshort job link are saved; title-only category metadata is not treated as a job.
FAQ
Why did I get fewer jobs than requested?
Only the first server-rendered page of each category is fetched (currently about 50 jobs per category). A category may expose fewer public jobs than your maxItems, and duplicates are skipped across URLs. Unsupported URLs and non-Cutshort hosts are rejected before fetching.
Why is salary missing?
Salary is only saved when Cutshort exposes a public salary range for that listing.
Can I scrape private applicant data?
No. This actor only extracts public job listing data visible without logging in.
Legality and responsible use
This actor is designed for publicly available job listing data. You are responsible for ensuring that your use case complies with applicable laws, platform terms, and privacy obligations. Do not use scraped data for spam, discrimination, or unauthorized profiling.
Related scrapers
Explore other Automation Lab actors for job and recruiting workflows:
- https://apify.com/automation-lab/naukri-scraper
- https://apify.com/automation-lab/welcome-to-the-jungle-jobs-scraper
- https://apify.com/automation-lab/remoteok-jobs-scraper
- https://apify.com/automation-lab/jobicy-jobs-scraper
Changelog
Initial version extracts public Cutshort job listings from server-rendered job category pages.
AI, dependencies and data handling
This Actor does not use AI or send input or job data to an AI provider. It requests public Cutshort pages directly over HTTPS; no paid external API or proxy is required. Apify hosts the run, logs and dataset under your account's storage settings. The Actor has no separate persistent cache or external data recipient. Delete run datasets through your Apify account when no longer needed. Cutshort is an independent source; this Actor is not affiliated with or endorsed by Cutshort.
Support
If a public Cutshort jobs page fails, include the input URL, run ID, and expected listing examples in your support request.
Field reference: title
The job title shown by Cutshort.
Field reference: company
The company name associated with the public listing.
Field reference: skills
The technologies and skills Cutshort exposes for the job.
Field reference: salary
The salary text and numeric range when public.
Field reference: experience
The experience range when public.
Field reference: description
The public job description converted to text, with optional HTML retained.