SimplyHired Jobs Scraper | 9 Fields, JSON Route, No Login
Pricing
from $1.50 / 1,000 jobs
SimplyHired Jobs Scraper | 9 Fields, JSON Route, No Login
Scrape live job listings from SimplyHired search results. Titles, companies, locations, salaries, job types, descriptions and apply URLs. No login, no anti-bot, pay per job. Use it as an MCP server in Claude, ChatGPT & AI agents.
Pricing
from $1.50 / 1,000 jobs
Rating
0.0
(0)
Developer
The Mine Works
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
14 days 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.
Type a job title and a US city and get SimplyHired's matching job postings as clean rows: title, company, location, salary when the employer shows one, job type, posting date, the description snippet from the results page and a link to the full listing. No SimplyHired account and no API key. The actor reads the structured job data SimplyHired's own pages load, so every field comes straight from the site rather than from scraped page text.
Why choose this actor?
- Salary and job type on the same row. In our test run,
data analystin Chicago returned jobs with the salary range exactly as SimplyHired shows it (such as $75,000 to $85,000 a year), the job type, the posting date and the company, and SimplyHired reported 350 matching jobs for that search. - Built for SimplyHired's Cloudflare wall. SimplyHired refuses datacenter IPs. The actor uses Apify's US residential proxy (included in the price), its fast JSON route first and a real browser only when that route is refused, and it stops before running up cost when the site keeps refusing.
- Pay only for jobs delivered. From $1.50 per 1,000 jobs on Gold, plus $0.005 per run. A search that finds nothing, or is blocked before any job comes back, costs only the start fee.
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:
{"query": "data analyst","location": "Chicago","maxResults": 10}
You get 10 data analyst jobs in the Chicago area, each with company, location, posting date and a link.
The only input you must give is query: a job title or keyword, typed as you would on simplyhired.com (registered nurse, python developer, warehouse). location takes a US city, a state or a ZIP code (Chicago, New York, NY, 94105); leave it empty to search all US locations. maxResults caps the number of jobs.
Apify's free plan includes $5 of credit every month, which covers about 1,900 jobs at this actor's Free plan price ($0.0025 a job plus the $0.005 start fee, in runs of 100 jobs).
Copy to your AI assistant
themineworks/simplyhired-scraper on Apify. Searches SimplyHired (US job listings) by keyword and location and returns one row per job with title, company, location, salary (when shown), job_type, posted_date, description_snippet and apply_url. Call ApifyClient("TOKEN").actor("themineworks/simplyhired-scraper").call(run_input={...}), then client.dataset(run["defaultDatasetId"]).list_items().items. Required: query (string, job title or keyword). Optional: location (US city, state or ZIP; empty = all US), maxResults (1 to 200, default 30), allowBrowserFallback (default true), proxyConfiguration (default Apify residential proxy, US; keep it). The last row has _type "summary" (SimplyHired's reported total, jobs delivered, pages read) and is never billed. Full spec: GET https://api.apify.com/v2/acts/themineworks~simplyhired-scraper/builds/default (Bearer TOKEN), which returns inputSchema and readme. Token: https://console.apify.com/account/integrations?fpr=ymnoit&utm_source=apify-readme&utm_medium=referral
Key features
- 9 fields per job:
title,company,location,salary,job_type,posted_date,description_snippet,apply_urlandscraped_at. A field the listing does not show (often salary) is left out of the row. - Up to 200 jobs per run, read page by page with SimplyHired's own page cursors, up to 15 pages, with a short pause between pages.
- One row per job. Jobs are deduplicated within a run by SimplyHired's job key, so a listing that appears on two pages is delivered and charged once.
- Two ways in, one result. A fast JSON route that returns SimplyHired's job data directly, and a headless browser fallback that is used only when the fast route is refused; the browser page also refreshes the key the fast route needs, so later pages go back to the fast route.
- The search's real size. The summary row reports
result_count_reported, the total SimplyHired says matches your search, so you can see how much of the market a run covered.
How to use it
Basic: one role in one city
{"query": "registered nurse","location": "Houston, TX","maxResults": 50}
Nationwide search
{"query": "python developer","maxResults": 200}
With location empty, SimplyHired searches all US locations. 200 is the most one run returns; for more, split the search by state or city.
Salary benchmarking for a role across cities
Run the same query with location set to each city you compare (Chicago, Austin, TX, Denver, CO), 100 jobs each, as separate tasks. Keep the rows that have a salary, parse the range, and compare medians by city. Many employers do not post pay, so expect a share of rows without salary.
Daily feed for a niche job board
{"query": "dental hygienist","location": "California","maxResults": 50}
Save it as a task and schedule it daily (for example 0 6 * * *). SimplyHired orders results by its own relevance, not strictly by date (our test returned jobs posted in August 2026, July 2026 and November 2024), and the actor does not remember earlier runs, so filter on posted_date and deduplicate on apply_url before you publish; every run charges for every job it returns.
Hiring signals for B2B sales
{"query": "sales development representative","location": "New York, NY","maxResults": 100}
Count jobs by company: a company opening several sales roles at once is growing and buying. Pass the names to B2B Leads Finder to find the people to contact.
Input parameters
| Parameter | Type | Default | What it does |
|---|---|---|---|
query | string | required (form prefill: data analyst) | Job title or keyword. A run without it ends at once with a summary row and pays only the start fee. |
location | string | none (form prefill: Chicago) | US city, state or ZIP code. Leave empty for all US locations. |
maxResults | integer (1 to 200) | 30 (form prefill: 5) | Most jobs to return. |
allowBrowserFallback | boolean | true | Let the actor retry a refused page in a real browser. Turn off to use only the fast route; if SimplyHired refuses it, the run then returns fewer jobs or none. |
proxyConfiguration | object | Apify residential proxy, US | SimplyHired refuses datacenter IPs and residential IPs outside the US, so keep this default. |
Run options. The default memory is 512 MB and the default timeout is 300 seconds. A page takes a second or two on the fast route and longer in the browser.
What data do you get?
One row per job.
The job: title, job_type (one or more types as SimplyHired lists them, joined with commas, such as Full-time), posted_date (ISO timestamp), description_snippet (the short extract SimplyHired shows in its results, not the full description), apply_url (the job's SimplyHired page, which links on to the employer's application).
The employer and place: company and location (city and state as listed).
Pay: salary, the salary or range as the listing shows it, such as $85,310 to $110,902 a year. It is left out when the employer does not post pay (1 of 3 jobs in our test).
Capture time: scraped_at.
The full job description is not included: open apply_url for it. posted_date is SimplyHired's own date for the listing, and some listings stay up for months (one in our test was first posted in November 2024).
Each run ends with one _type: "summary" row: query, location, result_count_reported (SimplyHired's total for the search), jobs_scraped, charged_for, pages_fetched, how many pages came through the fast route and the browser, and the actor's own cost estimate. It is never charged. Skip rows that have a _type field when you load jobs.
Stable fields for automations
These 7 fields were present in every job we sampled (the 3 jobs of our 1 September test run); salary and job_type appear when the listing shows them:
| Field | What it holds |
|---|---|
title | Job title |
company | Hiring company |
location | City and state as listed |
posted_date | Posting date, ISO timestamp |
description_snippet | Short extract from the search results |
apply_url | Link to the job on SimplyHired |
scraped_at | ISO timestamp when the row was captured |
We will not rename these fields. New fields may be added over time; existing ones keep their names.
Output examples
Real rows from our test run on 1 September 2026 (query: "data analyst", location: "Chicago"). The salary values are left out of these examples only because SimplyHired writes ranges with a spaced dash; in the dataset they read like "$85,310 to $110,902 a year" with that dash.
A job with several job types:
{"title": "Senior Finance Data Analyst","company": "Encore Global","location": "Schiller Park, IL","job_type": "Weekends as needed, Full-time, Evenings as needed, Holidays, On call","posted_date": "2026-07-30T16:15:30.844Z","description_snippet": "Experience with business intelligence and visualization tools (e.g., Power BI, Tableau), with an emphasis on insight driven dashboard design.","apply_url": "https://www.simplyhired.com/job/UGSfrSYvVLbE1ZpVzx_KSSNT6hv2rGU9sHMxpcMhERXELbxMFkZ9VQ","scraped_at": "2026-09-01T21:15:29.328Z"}
A job with no salary or job type on the listing:
{"title": "Data Analyst","company": "Brillio Inc","location": "Rosemont, IL","posted_date": "2024-11-23T16:04:02.669Z","description_snippet": "You will partner closely with the Engagement Portfolio Leaders and Customers to deliver state of the art solutions engineered by Visualization Architects for…","apply_url": "https://www.simplyhired.com/job/scpk3dR7eXvf26yIOTAo4QUoLWKcNZupTMbP1ShsMFDn1BrhsqomxQ","scraped_at": "2026-09-01T21:15:29.382Z"}
The summary row of the same run (never charged; guard fields left out):
{"_type": "summary","query": "data analyst","location": "Chicago","result_count_reported": 350,"jobs_scraped": 3,"charged_for": 3,"pages_fetched": 1,"pages_via_json": 0,"pages_via_browser": 1,"allow_browser_fallback": true,"scraped_at": "2026-09-01T21:15:29.434Z"}
Pricing
Pay per event: you pay for each job delivered to your dataset, plus a small start fee per run.
| Event | Free | Bronze | Silver | Gold and above |
|---|---|---|---|---|
job-scraped, per job | $0.0025 | $0.002 | $0.00175 | $0.0015 |
job-scraped, per 1,000 jobs | $2.50 | $2.00 | $1.75 | $1.50 |
apify-actor-start, per run | $0.005 per GB of run memory, minimum one event | same | same | same |
The start fee, exactly. Apify's apify-actor-start event is charged once when a run starts, at $0.005 for each GB of memory the run uses, with a minimum of one event. This actor runs on 512 MB by default, so a default run pays one event: $0.005.
Worked examples. 30 jobs (the default) on the Free plan: $0.075 plus $0.005. 200 jobs on Gold: $0.30 plus $0.005. The residential proxy and the browser fallback are included; you never pay for them separately.
Never charged: a job already delivered in the same run, a search with no results, a search blocked before any job came back, retries, and the summary row. A run that delivers nothing pays only the start fee.
There is no scheduled price change for this actor. The Pricing tab on this page always shows the rate for your own plan; if it and this table ever differ, the Pricing tab is right.
FAQ
What is SimplyHired? A US job search site listing jobs from employers and job boards across the United States. This actor reads its public search results, the same ones any visitor sees without signing in.
How many jobs can I get?
Up to 200 per run, across up to 15 result pages. SimplyHired's own total for your search is in the summary row's result_count_reported. For more, split the search by city, state or job title.
Does it return the full job description?
No. It returns the snippet SimplyHired shows in its results, plus apply_url, the link to the full posting. That keeps runs fast and cheap.
Do I need a SimplyHired account, cookies or an API key? No. You need only an Apify account.
Which proxy does it use? Apify's residential proxy in the US, included in the price. SimplyHired sits behind Cloudflare, which refuses datacenter IPs and residential IPs from other countries, so do not change the default.
What is the browser fallback? When SimplyHired refuses the fast route for a page, the actor loads that page in a headless browser instead. The browser page also carries the key the fast route needs, so later pages go back to the fast route. If page after page needs the browser, the actor stops early rather than keep going on the slow path; you are charged only for jobs delivered either way.
Does it work outside the US? SimplyHired.com lists US jobs only, and this actor searches simplyhired.com.
Can I run it on a schedule?
Yes. Save your input as a task, then in Apify Console go to Schedules, Create new, and pick a time or a cron expression such as 0 6 * * *. Each run returns and charges every job it finds, so deduplicate on apply_url between runs.
How do I export the data?
From the run's Storage tab as JSON, CSV, Excel, XML or HTML, or through the Apify API. Drop the row that has a _type field if you want jobs only.
Can I use it from Claude, ChatGPT or another AI assistant?
- Connector URL:
https://mcp.apify.com/?tools=themineworks/simplyhired-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 simplyhired-scraper "https://mcp.apify.com/?tools=themineworks/simplyhired-scraper".
Is it legal to scrape SimplyHired? The actor collects only public job listings that anyone can see without logging in, and it does not get past any login wall. Listings describe employers and roles, not private individuals. You are responsible for how you use the data, including SimplyHired's terms and data protection laws such as GDPR and CCPA. This actor is not affiliated with SimplyHired. This is general information, not legal advice.
Integrations
- Google Sheets: export a run to a sheet, or use Apify's Google Sheets integration to append each day's jobs.
- Make, Zapier and n8n: use the Apify app or node to start a run and post new jobs to a job board, Slack or an ATS.
- Webhooks: have Apify call your URL when a run succeeds, then read the dataset.
- API and client libraries: start runs and read datasets from Python, JavaScript or any HTTP client. The "Copy to your AI assistant" block above has the exact call.
- MCP clients: Claude, ChatGPT, Cursor, VS Code and Claude Code can call the actor as a tool through
https://mcp.apify.com.
To cover more of the US market, pair it with Indeed Jobs Scraper and Career Site Jobs Scraper for jobs posted straight to Greenhouse, Lever, Ashby and Workday.
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
- Indeed Jobs Scraper
- Instahyre Jobs Scraper
- CutShort Jobs Scraper
- Apna Jobs Scraper
- LinkedIn Jobs Scraper
- Recruiting & Jobs MCP
Social media and video
Leads and business directories
Marketing, SEO and reviews
Real estate
Science, health and government data
Company and business data
E-commerce and marketplaces
Food and local services
Developer and AI tools
More tools
Support
Found a search that returns nothing, or need a field we do not return yet? Open an issue on the Issues tab of this page with your input and the run ID, and we will reply there. To ask for a new job board, email dmineworks@gmail.com.
SimplyHired Jobs Scraper turns a job title and a US location into job rows with company, salary, job type and posting date, charged only per job delivered.

