SimplyHired Job Search & Salary Parser
Search SimplyHired by keyword, location, employment type, remote work, and salary, and get parsed salary ranges, benefits, qualifications, and full descriptions for each job.
Input schema
Input fields, types, required flags, descriptions, defaults, and prefills come from the published definition. Prefill examples are distinct from defaults.
| Field | Type | Required | Description |
|---|---|---|---|
mode | string | required | What to fetch: search jobs on SimplyHired, or scrape specific SimplyHired URLs you already have. |
searchQueries | array | optional | One or more job titles, skills, or keywords. Each entry runs as its own search, e.g. `registered nurse` or `python developer, remote`. Ignored when Search URLs are provided. |
searchUrls | array | optional | Full SimplyHired search URLs, including any filters and a country domain (e.g. https://www.simplyhired.co.uk/search?q=nurse&l=London). When provided, these are used instead of the query, location and filter fields. |
Show all input fields
| Field | Type | Required | Description |
|---|---|---|---|
mode | string | required | What to fetch: search jobs on SimplyHired, or scrape specific SimplyHired URLs you already have. |
searchQueries | array | optional | One or more job titles, skills, or keywords. Each entry runs as its own search, e.g. `registered nurse` or `python developer, remote`. Ignored when Search URLs are provided. |
searchUrls | array | optional | Full SimplyHired search URLs, including any filters and a country domain (e.g. https://www.simplyhired.co.uk/search?q=nurse&l=London). When provided, these are used instead of the query, location and filter fields. |
jobUrls | array | optional | SimplyHired job URLs (https://www.simplyhired.com/job/...) or search URLs to scrape directly. Job IDs may also be pasted on their own. |
location | string | optional | City, state, ZIP code, or `remote`. Leave empty to search nationwide (mode=search). |
country | string | optional | Which SimplyHired site to search (mode=search). Choose the country that matches your location. |
radius | string | optional | Distance around the location (mode=search). Only applies when a location is set. |
sortBy | string | optional | Order of the search results (mode=search). |
datePosted | string | optional | Only include jobs added within this window (mode=search). |
employmentType | string | optional | Filter by employment type (mode=search). |
minSalary | integer | optional | Only jobs with pay at or above this amount, in the local currency of the selected country (e.g. 100000 = $100,000 a year on the US site). Leave 0 for no filter. |
remoteType | string | optional | Filter by remote work arrangement (mode=search). |
developerSkill | string | optional | Only jobs tagged with this software skill (mode=search). Applies mainly to tech roles; combine several skills with Developer skills below. |
developerSkills | array | optional | Additional software skills to require together with the Developer skill above (mode=search). Use skill names such as `Python`, `SQL`, `React` (or their codes). Jobs must match every listed skill. |
fetchJobDetails | boolean | optional | Fetch each job's detail payload for the full description, parsed salary, coordinates, qualifications and employer rating. Adds one fast request per job. Turn off for search-card fields only. |
enrichCompanyPages | boolean | optional | Look up each employer's SimplyHired company page (once per employer) and add its address, size, revenue band and industry when the page's company name matches the listing. Off by default. |
maximizeCoverage | boolean | optional | When a search hits SimplyHired's per-search result limit, continue with extra facet searches (job types and developer skills) and merge the unique jobs. Slower and uses more requests, but returns more of the matching jobs. |
maxItems | integer | optional | Hard cap on the number of job records returned. |
Download the published input schema
View complete JSON
{
"description": "Search SimplyHired (US or any of 23 country sites) by keyword and location or run your own search URLs, and get parsed salary ranges, full descriptions, coordinates and benefits for every job.",
"properties": {
"country": {
"default": "united-states",
"description": "Which SimplyHired site to search (mode=search). Choose the country that matches your location.",
"editor": "select",
"enum": [
"united-states",
"canada",
"united-kingdom",
"ireland",
"germany",
"france",
"spain",
"italy",
"netherlands",
"belgium",
"austria",
"switzerland",
"portugal",
"sweden",
"india",
"japan",
"south-korea",
"china",
"brazil",
"mexico",
"australia",
"argentina",
"south-africa"
],
"enumTitles": [
"United States (simplyhired.com)",
"Canada (simplyhired.ca)",
"United Kingdom (simplyhired.co.uk)",
"Ireland (simplyhired.ie)",
"Germany (simplyhired.de)",
"France (simplyhired.fr)",
"Spain (simplyhired.es)",
"Italy (simplyhired.it)",
"Netherlands (simplyhired.nl)",
"Belgium (simplyhired.be)",
"Austria (simplyhired.at)",
"Switzerland (simplyhired.ch)",
"Portugal (simplyhired.pt)",
"Sweden (simplyhired.se)",
"India (simplyhired.co.in)",
"Japan (simplyhired.jp)",
"South Korea (simplyhired.kr)",
"China (simplyhired.cn)",
"Brazil (simplyhired.com.br)",
"Mexico (simplyhired.mx)",
"Australia (simplyhired.com.au)",
"Argentina (simplyhired.com.ar)",
"South Africa (za.simplyhired.com)"
],
"prefill": "united-states",
"title": "Country",
"type": "string"
},
"datePosted": {
"default": "",
"description": "Only include jobs added within this window (mode=search).",
"editor": "select",
"enum": [
"",
"1",
"3",
"7",
"14",
"30"
],
"enumTitles": [
"Any time",
"Past 24 hours",
"Past 3 days",
"Past week",
"Past 2 weeks",
"Past month"
],
"prefill": "",
"title": "Date posted",
"type": "string"
},
"developerSkill": {
"default": "",
"description": "Only jobs tagged with this software skill (mode=search). Applies mainly to tech roles; combine several skills with Developer skills below.",
"editor": "select",
"enum": [
"",
"JB2WC",
"X62BT",
"84K74",
"WD7PP",
"FGY89",
"EVPJU",
"AP3T4",
"6XQ9P",
"6ETQT",
"GJUK3",
"NGEEK",
"U5AXZ",
"6M28R",
"EHNJH",
"XH9RQ",
"FQMG4",
"AGW49",
"JQ94N",
"GKAXA",
"KTEH7",
"5FG4F"
],
"enumTitles": [
"Any",
"JavaScript",
"Python",
"React",
"TypeScript",
"SQL",
"Java",
"C#",
"CSS",
"Go",
"C++",
"Angular",
"Swift",
"Node.js",
".NET",
"Spring framework",
"PHP",
".NET Core",
"Scala",
"Flutter",
"Perl",
"Dart"
],
"prefill": "",
"title": "Developer skill",
"type": "string"
},
"developerSkills": {
"default": [],
"description": "Additional software skills to require together with the Developer skill above (mode=search). Use skill names such as `Python`, `SQL`, `React` (or their codes). Jobs must match every listed skill.",
"editor": "stringList",
"prefill": [],
"title": "Developer skills (extra, combined with AND)",
"type": "array"
},
"employmentType": {
"default": "",
"description": "Filter by employment type (mode=search).",
"editor": "select",
"enum": [
"",
"CF3CP",
"NJXCK",
"75GKK",
"4HKF7",
"5QWDV",
"VDTG7",
"7SBAT",
"ZG59D"
],
"enumTitles": [
"Any",
"Full-time",
"Contract",
"Part-time",
"Temporary",
"Permanent",
"Internship",
"Temp-to-hire",
"Freelance"
],
"prefill": "",
"title": "Employment type",
"type": "string"
},
"enrichCompanyPages": {
"default": false,
"description": "Look up each employer's SimplyHired company page (once per employer) and add its address, size, revenue band and industry when the page's company name matches the listing. Off by default.",
"prefill": false,
"title": "Enrich employer company pages",
"type": "boolean"
},
"fetchJobDetails": {
"default": true,
"description": "Fetch each job's detail payload for the full description, parsed salary, coordinates, qualifications and employer rating. Adds one fast request per job. Turn off for search-card fields only.",
"prefill": true,
"title": "Fetch full job details",
"type": "boolean"
},
"jobUrls": {
"default": [],
"description": "SimplyHired job URLs (https://www.simplyhired.com/job/...) or search URLs to scrape directly. Job IDs may also be pasted on their own.",
"editor": "stringList",
"prefill": [],
"title": "Specific URLs (mode=byUrl)",
"type": "array"
},
"location": {
"default": "",
"description": "City, state, ZIP code, or `remote`. Leave empty to search nationwide (mode=search).",
"editor": "textfield",
"prefill": "New York",
"title": "Location",
"type": "string"
},
"maxItems": {
"default": 20,
"description": "Hard cap on the number of job records returned.",
"maximum": 5000,
"minimum": 1,
"prefill": 3,
"title": "Max items",
"type": "integer"
},
"maximizeCoverage": {
"default": false,
"description": "When a search hits SimplyHired's per-search result limit, continue with extra facet searches (job types and developer skills) and merge the unique jobs. Slower and uses more requests, but returns more of the matching jobs.",
"prefill": false,
"title": "Maximize coverage (slower)",
"type": "boolean"
},
"minSalary": {
"default": 0,
"description": "Only jobs with pay at or above this amount, in the local currency of the selected country (e.g. 100000 = $100,000 a year on the US site). Leave 0 for no filter.",
"maximum": 1000000,
"minimum": 0,
"prefill": 0,
"title": "Minimum salary",
"type": "integer"
},
"mode": {
"default": "search",
"description": "What to fetch: search jobs on SimplyHired, or scrape specific SimplyHired URLs you already have.",
"editor": "select",
"enum": [
"search",
"byUrl"
],
"enumTitles": [
"Search jobs (keyword, location, filters)",
"Scrape specific URLs (searches or jobs)"
],
"prefill": "search",
"title": "Mode",
"type": "string"
},
"radius": {
"default": "",
"description": "Distance around the location (mode=search). Only applies when a location is set.",
"editor": "select",
"enum": [
"",
"exact",
"5",
"10",
"15",
"25",
"50",
"100"
],
"enumTitles": [
"Site default (25 miles)",
"Exact location only",
"5 miles",
"10 miles",
"15 miles",
"25 miles",
"50 miles",
"100 miles"
],
"prefill": "",
"title": "Search radius",
"type": "string"
},
"remoteType": {
"default": "",
"description": "Filter by remote work arrangement (mode=search).",
"editor": "select",
"enum": [
"",
"Remote",
"Hybrid work"
],
"enumTitles": [
"Any",
"Remote only",
"Hybrid"
],
"prefill": "",
"title": "Remote work",
"type": "string"
},
"searchQueries": {
"default": [],
"description": "One or more job titles, skills, or keywords. Each entry runs as its own search, e.g. `registered nurse` or `python developer, remote`. Ignored when Search URLs are provided.",
"editor": "stringList",
"prefill": [
"software engineer"
],
"title": "Search queries (mode=search)",
"type": "array"
},
"searchUrls": {
"default": [],
"description": "Full SimplyHired search URLs, including any filters and a country domain (e.g. https://www.simplyhired.co.uk/search?q=nurse&l=London). When provided, these are used instead of the query, location and filter fields.",
"editor": "stringList",
"prefill": [],
"title": "SimplyHired search URLs (mode=search)",
"type": "array"
},
"sortBy": {
"default": "relevance",
"description": "Order of the search results (mode=search).",
"editor": "select",
"enum": [
"relevance",
"date",
"distance"
],
"enumTitles": [
"Relevance",
"Newest first",
"Nearest first"
],
"prefill": "relevance",
"title": "Sort results by",
"type": "string"
}
},
"required": [
"mode"
],
"schemaVersion": 1,
"title": "SimplyHired Job Search & Salary Parser Input",
"type": "object"
}
Output schema
Published result links and storage locations. This schema is not an exhaustive contract for every field in a dataset record.
| Field | Type | Required | Description |
|---|---|---|---|
jobs | string | optional | Dataset containing all scraped SimplyHired job records. |
Download the published output schema
View complete JSON
{
"actorOutputSchemaVersion": 1,
"description": "SimplyHired job records from 23 country sites with parsed salary ranges, employment types, remote-work status, coordinates, full descriptions and application links.",
"properties": {
"jobs": {
"description": "Dataset containing all scraped SimplyHired job records.",
"template": "{{links.apiDefaultDatasetUrl}}/items",
"title": "SimplyHired job records",
"type": "string"
}
},
"title": "SimplyHired Job Search & Salary Parser Output"
}
Dataset schema
Published dataset views and any declared field definitions. A view can select only a subset of the returned record fields.
Download the published dataset schema
View complete JSON
{
"actorSpecification": 1,
"views": {
"overview": {
"display": {
"component": "table",
"properties": {}
},
"title": "Jobs",
"transformation": {
"fields": [
"title",
"company",
"location",
"salary",
"salaryMin",
"salaryMax",
"salaryCurrency",
"employmentType",
"remoteType",
"datePosted",
"jobUrl"
]
}
}
}
}
Key-value schema
Published key-value store definitions, when provided by this build.
This definition is not present in the default published build. See the published README for available documentation.
Published README
Read the full published documentation
SimplyHired Job Search & Salary Parser
SimplyHired gathers job postings from employer career sites, staffing agencies, and niche job boards across 23 country markets. This actor turns those postings into structured records: it can run keyword and location searches (or replay search URLs you paste in), or fetch individual job postings you already have, and it returns each listing with its salary parsed into numbers, the full description, coordinates, and application details.
What this actor does
- Search any SimplyHired market: 23 country sites (United States, Canada, United Kingdom, Germany, France, India, Japan, Australia, Brazil, and more), each with keyword, location, and radius search.
- Filter server-side: date posted, employment type, minimum pay, remote/hybrid, sort order, and developer skills (one or several) are applied by SimplyHired itself, so the result count matches the site.
- Enrich every job, not just the first one: each record is completed from the posting's own detail data — full description, salary numbers, qualifications, coordinates, employer rating, and application link.
- Parse salaries in local formats: display text like
$140,000 - $180,000 a year,£45,000 - £55,000 a year,80.000 € – 120.000 € pro Jahr, or時給 4,000円becomes numericsalaryMin/salaryMaxwith the right currency and pay period. - Maximize coverage on big searches: SimplyHired serves roughly 900–1,000 results per search. With
maximizeCoveragethe actor keeps going with extra facet searches (job types, developer skills) and merges the unique postings — 2–2.5x more jobs than a single search in testing. - Optional employer company pages: with
enrichCompanyPagesthe actor looks up each employer's SimplyHired company page (once per employer) and adds its address, headcount band, revenue band, and industry — only when the page's own company name matches the listing. - Feed URLs as well as forms: paste SimplyHired search URLs or job URLs (or bare job IDs) and let the actor do the pagination.
- Fields a listing doesn't provide are left out of that record — no empty placeholders.
Output per job
| Field | Description |
|---|---|
jobId |
Unique SimplyHired job key. |
title, normalizedTitle |
Job title as published and its normalized form. |
company |
Employer name. |
location |
Location string as shown on the listing. |
city, state |
City and state/region parsed from the listing. |
latitude, longitude |
Coordinates of the posting location. |
remoteType |
Remote or hybrid arrangement, when stated. |
employmentType |
Primary employment type (Full-time, Contract, Part-time, …). |
employmentTypes |
Every employment type on the posting, including the listing's localized labels when provided. |
salary |
Salary text exactly as displayed on the listing. |
salaryMin, salaryMax |
Parsed pay bounds in full local-currency units. |
salaryCurrency |
ISO currency code (e.g. USD, GBP, EUR, JPY). |
salaryPeriod |
annual, monthly, weekly, daily, or hourly. |
description |
Full job description with HTML tags stripped. |
benefits |
Benefits listed on the posting. |
qualifications |
Qualifications extracted by SimplyHired. |
requirements |
Requirement tags shown on the search card. |
datePosted |
ISO 8601 UTC timestamp of the posting date. |
expirationDate |
Listing expiration date, when stated. |
jobUrl |
SimplyHired listing URL. |
applicationUrl |
SimplyHired apply/redirect link for the posting. |
companyPageUrl |
Employer's SimplyHired company page (from the source, or verified by enrichCompanyPages). |
companyAddress, companyEmployeeCount, companyRevenue, companyIndustry |
Employer profile details from the company page (only with enrichCompanyPages, and only when the page matches the listing's employer). |
companyRating |
Employer rating, when SimplyHired shows one. |
sponsored |
Whether the listing is a sponsored placement. |
indeedApply |
Whether the posting uses the Indeed application flow. |
snippet |
Short preview text from the search card. |
logoUrl |
Employer logo image, when available. |
sourceDomain |
Which SimplyHired site the record came from (e.g. www.simplyhired.co.uk). |
searchUrl, searchQuery |
The search that produced the record. |
country |
Country market value (e.g. united-kingdom). |
sourceUrl |
URL the record was scraped from. |
recordType |
Always "job". |
scrapedAt |
ISO 8601 UTC timestamp of when this actor fetched the record. |
Input
| Field | Type | Default | Description |
|---|---|---|---|
mode |
String (select) | search |
search (form-driven searches) or byUrl (scrape specific URLs). |
searchQueries |
Array of strings | – | Job titles, skills, or keywords. Each entry runs its own search. Used when mode is search and no search URLs are given. |
searchUrls |
Array of strings | – | Full SimplyHired search URLs (with any filters). They take precedence over the query/location/filter fields. |
jobUrls |
Array of strings | – | Job URLs, job IDs, or search URLs to scrape directly. Used when mode is byUrl. |
location |
String | – | City, state, ZIP, or remote. Leave empty for a nationwide search. |
country |
String (select) | united-states |
Which SimplyHired site to search. Pick the country that matches your location. |
radius |
String (select) | site default (25 mi) | Distance around the location: exact, 5, 10, 15, 25, 50, or 100 miles. |
sortBy |
String (select) | relevance |
relevance, date (newest first), or distance (nearest first). |
datePosted |
String (select) | any time | Past 24 hours, 3 days, week, 2 weeks, or month. |
employmentType |
String (select) | any | Full-time, Contract, Part-time, Temporary, Permanent, Internship, Temp-to-hire, or Freelance. |
minSalary |
Integer | 0 |
Minimum pay in the country's local currency (e.g. 100000 on the US site = $100,000/year). |
remoteType |
String (select) | any | Remote or Hybrid work. |
developerSkill |
String (select) | any | One software skill such as Python, Java, React, SQL, Go, or Swift. |
developerSkills |
Array of strings | – | Extra skills to require together with the single skill above (AND). Accepts names (Python, SQL) or codes. |
fetchJobDetails |
Boolean | true |
Fetch each posting's detail data (description, parsed salary, coordinates, qualifications). Adds one fast request per job. |
enrichCompanyPages |
Boolean | false |
Look up each employer's SimplyHired company page (one request per employer, cached) for address, headcount band, revenue band, and industry. Only matched employers are filled. |
maximizeCoverage |
Boolean | false |
Keep collecting past SimplyHired's per-search result limit using extra facet searches, merged and deduplicated. Slower. |
maxItems |
Integer | 20 |
Hard cap on returned records (1–5000). |
Examples
Keyword search with filters
{
"mode": "search",
"searchQueries": ["registered nurse"],
"location": "Houston, TX",
"country": "united-states",
"datePosted": "7",
"employmentType": "CF3CP",
"maxItems": 100
}
Remote jobs in Canada above a pay floor
{
"mode": "search",
"searchQueries": ["customer success manager"],
"location": "remote",
"country": "canada",
"remoteType": "Remote",
"minSalary": 80000,
"sortBy": "date",
"maxItems": 150
}
Run prepared search URLs (any country)
{
"mode": "search",
"searchUrls": [
"https://www.simplyhired.co.uk/search?q=software+engineer&l=London&t=7",
"https://www.simplyhired.de/search?q=entwickler&l=Berlin"
],
"maxItems": 200
}
Scrape specific job URLs
{
"mode": "byUrl",
"jobUrls": [
"https://www.simplyhired.com/job/pR885UfXXEquRuih1PVGw9Ujl7fkq-RglEg5fxkaZzhQn1D46UaJzQ",
"https://www.simplyhired.ca/job/MebGsOvO4rbcC1COSt7eX0Ii5i-RX6ItIdOtA-OMQGDW5w024IZ81g"
],
"maxItems": 2
}
Use cases
- Pay benchmarking: aggregate
salaryMin/salaryMaxby role, city, and employment type within one currency. - Cross-market hiring research: compare supply for the same role across the 23 SimplyHired markets in separate runs.
- Recruiting pipelines: monitor which employers are posting for a role, with coordinates and company ratings attached.
- Job alerting and feeds: schedule a run per keyword and forward new
jobIds to your CRM, sheet, or webhook. - Skills analysis: use
developerSkillfilters andqualificationsto track technology demand over time. - Posting refresh: feed previously collected
jobUrlvalues back throughmode: "byUrl"to re-check status and pay.
FAQ
Where does this data come from?
Every record comes from SimplyHired's public job pages and the site's own page data, without any login. This actor is an independent tool and is not affiliated with or endorsed by SimplyHired.
Which countries are supported?
The United States, Canada, the United Kingdom, Ireland, Germany, France, Spain, Italy, the Netherlands, Belgium, Austria, Switzerland, Portugal, Sweden, India, Japan, South Korea, China, Brazil, Mexico, Australia, Argentina, and South Africa. Choose the country in the input, or use a search URL from the market you want.
Why are some salary fields missing?
SimplyHired only shows pay when the employer discloses it. When a listing has no pay information, the salary fields are omitted from that record rather than guessed. salary keeps the exact text; salaryMin / salaryMax are parsed from it (or from SimplyHired's structured pay data on the US site) in the local currency.
What's the difference between salary and salaryMin / salaryMax?
salary is the display text exactly as shown (e.g. £45,000 - £55,000 a year). salaryMin / salaryMax / salaryCurrency / salaryPeriod are the same value parsed into numbers, a currency code, and a pay period for filtering and aggregation. Use salaryCurrency before comparing values across countries.
How many results can one search return?
The actor keeps paging until your maxItems cap or the end of the result set. SimplyHired serves roughly 900–1,000 listings per search, even when it reports a larger match count. For more than that, turn on maximizeCoverage: the actor splits the search into facet sub-searches (employment types and developer skills), merges them and removes duplicates — in testing this returned 2.3x more unique jobs than a single search. You can also split by date window, radius, pay floor, or nearby locations yourself and combine the runs.
What do the link fields point to?
applicationUrl is SimplyHired's own apply link for the posting — the same link the Apply button on the listing page uses. Open it from the job listing (or with an active SimplyHired session); it is not a direct employer URL, and the employer's own application page is reached by following that button in your browser. companyPageUrl is present only when SimplyHired includes an employer page for the posting: turn on enrichCompanyPages to look the employer up by name instead, and the actor adds the link (plus the employer's address, size, revenue band and industry) only when the page's own company name matches the listing's employer — mismatches and missing pages are omitted.
Why is employmentType in English while the listing is in another language?
employmentType reports SimplyHired's own employment-type taxonomy (Full-time, Permanent, Contract, …), which the site uses across all its markets. employmentTypes also includes the listing's localized labels (for example "Festanstellung" or "CDI") when the posting provides them.
Can I mix several keywords or countries in one run?
Yes. Add multiple searchQueries, or pass several searchUrls from different country markets — each is walked separately and results are deduplicated by jobId.
Do I need an account, cookies, or a proxy?
No. The actor reads public pages only and connects on its own. Fill in the input and run it.
How fresh is the data?
Each run queries SimplyHired live, so the records reflect the state of the site at run time. Schedule the actor if you want recurring snapshots.
Python quickstart
Use a schema-derived input and the Python standard library to start a run. An Apify account and token are required for execution.
Source build GlALe8LJK6Pfmj3Te. Documentation is regenerated from the default published build; private drafts are not included.