Cutshort Jobs Scraper avatar

Cutshort Jobs Scraper

Pricing

from $0.03 / 1,000 job saveds

Go to Apify Store
Cutshort Jobs Scraper

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

Automation Lab

Maintained by Community

Actor 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-jobs
  • https://cutshort.io/jobs/python-jobs
  • https://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?

FieldDescription
titleJob title
urlPublic Cutshort job URL
jobIdCutshort job identifier when present
companyCompany name
companyUrlPublic company/profile URL when available
locationsLocation array
locationTextDisplay location text
remoteTypeRemote mode from Cutshort
roleTypesFull-time, internship, contract, or other role tags
skillsSkills and technologies listed on the job
salaryTextHuman-readable salary range
salaryMinNumeric salary lower bound when public
salaryMaxNumeric salary upper bound when public
salaryCurrencySalary currency code
experienceMinMinimum experience
experienceMaxMaximum experience
descriptionTextClean text job description
descriptionHtmlOriginal public HTML description
sourceUrlCategory/search URL that produced the job
sourceSlugCutshort slug such as reactjs-jobs
scrapedAtUTC 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

  1. Open the actor on Apify.
  2. Add one or more Cutshort job category URLs.
  3. Optionally add category slugs such as reactjs-jobs.
  4. Set the maximum number of jobs.
  5. Run the actor.
  6. 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 maxItems low during testing.
  • Disable descriptions when you only need counts, skills, companies, and salaries.
  • Deduplicate downstream by jobId or url.

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 ApifyClient
client = 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().items
print(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.

Explore other Automation Lab actors for job and recruiting workflows:

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.