Jobicy Remote Job Listings Scraper
Search remote job listings from Jobicy by keyword, region, and seniority level. Returns job title, company, salary range, job type, category, and a direct application link for each role.
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 | optional | Search the live Jobicy feed, fetch specific job URLs/IDs, or check stored job IDs. Leave blank for search. |
keyword | string | optional | Full-text search across Jobicy job content (3-50 characters). Leave blank to browse. Examples: python, marketing, product designer. |
geo | string | optional | Keep jobs open to this location or region. Jobicy treats worldwide roles as eligible for every location. Legacy display names such as United States or worldwide are mapped in code. Jobicy lists Malaysia in its taxonomy but its jobs API rejects that slug, so Malaysia is not offered. |
Show all input fields
| Field | Type | Required | Description |
|---|---|---|---|
mode | string | optional | Search the live Jobicy feed, fetch specific job URLs/IDs, or check stored job IDs. Leave blank for search. |
keyword | string | optional | Full-text search across Jobicy job content (3-50 characters). Leave blank to browse. Examples: python, marketing, product designer. |
geo | string | optional | Keep jobs open to this location or region. Jobicy treats worldwide roles as eligible for every location. Legacy display names such as United States or worldwide are mapped in code. Jobicy lists Malaysia in its taxonomy but its jobs API rejects that slug, so Malaysia is not offered. |
industry | string | optional | Keep jobs in one Jobicy category. Leave blank for all categories. |
jobType | string | optional | Keep one employment type. Leave blank for all types. |
jobLevel | string | optional | Keep one seniority level. Leave blank for all levels. Legacy Any is accepted and keeps listings Jobicy labels Any. |
postedWithinDays | integer | optional | Keep jobs published in the last N days. 0 means no date limit. Jobicy exposes the last 7 days. |
salaryDisclosedOnly | boolean | optional | Keep only listings where Jobicy publishes a salary range. |
minAnnualSalaryUsd | integer | optional | Keep USD listings whose annualised maximum salary meets this figure. Hourly pay is annualised at 2,080 hours; monthly pay at 12 months. 0 disables this filter. |
excludeKeywords | array | optional | Drop jobs whose title or company contains any of these terms (case-insensitive). |
onlyActive | boolean | optional | Check each listing's current status with Jobicy and keep only active jobs. |
includeDetails | boolean | optional | Fetch each job page for its exact expiry date, company website and applicant countries. Adds requests; unavailable pages are skipped. |
jobUrls | array | optional | Jobicy job URLs or numeric job IDs. Used only with mode byUrls or status. |
maxItems | integer | optional | Maximum job listings to return (1-5,000). Jobicy's live window usually contains about 1,000-1,500 jobs. |
Download the published input schema
View complete JSON
{
"description": "Choose the live Jobicy 7-day feed, specific job URLs, or listing-status checks.",
"properties": {
"excludeKeywords": {
"default": [],
"description": "Drop jobs whose title or company contains any of these terms (case-insensitive).",
"editor": "stringList",
"items": {
"type": "string"
},
"title": "Exclude Keywords",
"type": "array"
},
"geo": {
"default": "",
"description": "Keep jobs open to this location or region. Jobicy treats worldwide roles as eligible for every location. Legacy display names such as United States or worldwide are mapped in code. Jobicy lists Malaysia in its taxonomy but its jobs API rejects that slug, so Malaysia is not offered.",
"editor": "select",
"enumSuggestedValues": [
"",
"anywhere",
"apac",
"emea",
"latam",
"argentina",
"australia",
"austria",
"belgium",
"brazil",
"bulgaria",
"canada",
"china",
"costa-rica",
"croatia",
"cyprus",
"czechia",
"denmark",
"estonia",
"europe",
"finland",
"france",
"germany",
"greece",
"hong-kong",
"hungary",
"ireland",
"israel",
"italy",
"japan",
"latvia",
"lithuania",
"mexico",
"netherlands",
"new-zealand",
"norway",
"philippines",
"poland",
"portugal",
"romania",
"serbia",
"singapore",
"slovakia",
"slovenia",
"south-korea",
"spain",
"sweden",
"switzerland",
"thailand",
"turkiye",
"united-arab-emirates",
"uk",
"ukraine",
"usa",
"vietnam"
],
"enumTitles": [
"Any location",
"Anywhere",
"APAC",
"EMEA",
"LATAM",
"Argentina",
"Australia",
"Austria",
"Belgium",
"Brazil",
"Bulgaria",
"Canada",
"China",
"Costa Rica",
"Croatia",
"Cyprus",
"Czechia",
"Denmark",
"Estonia",
"Europe",
"Finland",
"France",
"Germany",
"Greece",
"Hong Kong",
"Hungary",
"Ireland",
"Israel",
"Italy",
"Japan",
"Latvia",
"Lithuania",
"Mexico",
"Netherlands",
"New Zealand",
"Norway",
"Philippines",
"Poland",
"Portugal",
"Romania",
"Serbia",
"Singapore",
"Slovakia",
"Slovenia",
"South Korea",
"Spain",
"Sweden",
"Switzerland",
"Thailand",
"Türkiye",
"United Arab Emirates",
"UK",
"Ukraine",
"USA",
"Vietnam"
],
"title": "Location",
"type": "string"
},
"includeDetails": {
"default": false,
"description": "Fetch each job page for its exact expiry date, company website and applicant countries. Adds requests; unavailable pages are skipped.",
"title": "Include Detail-Page Fields",
"type": "boolean"
},
"industry": {
"default": "",
"description": "Keep jobs in one Jobicy category. Leave blank for all categories.",
"editor": "select",
"enum": [
"",
"admin-support",
"business",
"copywriting",
"design-multimedia",
"supporting",
"cybersecurity",
"data-science",
"admin",
"education",
"accounting-finance",
"healthcare",
"hr",
"legal",
"marketing",
"management",
"project-management",
"qa-testing",
"seller",
"seo",
"engineering",
"technical-support",
"web-app-design"
],
"enumTitles": [
"Any industry",
"Admin & Virtual Assistance",
"Business Development",
"Content & Editorial",
"Creative & Design",
"Customer Support & Success",
"Cybersecurity",
"Data Science & Analytics",
"DevOps & Infrastructure",
"Education & E-learning",
"Finance & Accounting",
"Healthcare & Medical",
"HR & Recruiting",
"Legal & Compliance",
"Marketing & Sales",
"Product & Operations",
"Project & Program Management",
"QA & Testing",
"Sales",
"SEO",
"Software Engineering",
"Technical Support",
"Web, UI & UX Design"
],
"title": "Industry",
"type": "string"
},
"jobLevel": {
"default": "",
"description": "Keep one seniority level. Leave blank for all levels. Legacy Any is accepted and keeps listings Jobicy labels Any.",
"editor": "select",
"enumSuggestedValues": [
"",
"Entry-Level",
"Junior",
"Midweight",
"Senior",
"Director",
"Internship"
],
"enumTitles": [
"Any level",
"Entry-Level",
"Junior",
"Midweight",
"Senior",
"Director",
"Internship"
],
"title": "Seniority Level",
"type": "string"
},
"jobType": {
"default": "",
"description": "Keep one employment type. Leave blank for all types.",
"editor": "select",
"enum": [
"",
"Full-Time",
"Part-Time",
"Contract",
"Internship"
],
"enumTitles": [
"Any type",
"Full-Time",
"Part-Time",
"Contract",
"Internship"
],
"title": "Job Type",
"type": "string"
},
"jobUrls": {
"default": [],
"description": "Jobicy job URLs or numeric job IDs. Used only with mode byUrls or status.",
"editor": "stringList",
"items": {
"type": "string"
},
"title": "Job URLs or IDs",
"type": "array"
},
"keyword": {
"default": "",
"description": "Full-text search across Jobicy job content (3-50 characters). Leave blank to browse. Examples: python, marketing, product designer.",
"editor": "textfield",
"prefill": "",
"title": "Search Keyword",
"type": "string"
},
"maxItems": {
"default": 50,
"description": "Maximum job listings to return (1-5,000). Jobicy's live window usually contains about 1,000-1,500 jobs.",
"editor": "number",
"maximum": 5000,
"minimum": 1,
"prefill": 3,
"title": "Max Items",
"type": "integer"
},
"minAnnualSalaryUsd": {
"default": 0,
"description": "Keep USD listings whose annualised maximum salary meets this figure. Hourly pay is annualised at 2,080 hours; monthly pay at 12 months. 0 disables this filter.",
"editor": "number",
"maximum": 10000000,
"minimum": 0,
"title": "Minimum Annual Salary (USD)",
"type": "integer"
},
"mode": {
"default": "search",
"description": "Search the live Jobicy feed, fetch specific job URLs/IDs, or check stored job IDs. Leave blank for search.",
"editor": "select",
"enumSuggestedValues": [
"search",
"byUrls",
"status"
],
"enumTitles": [
"Search the live Jobicy feed",
"Fetch specific job URLs or IDs",
"Check stored job IDs"
],
"prefill": "search",
"title": "Mode",
"type": "string"
},
"onlyActive": {
"default": false,
"description": "Check each listing's current status with Jobicy and keep only active jobs.",
"title": "Only Active Listings",
"type": "boolean"
},
"postedWithinDays": {
"default": 0,
"description": "Keep jobs published in the last N days. 0 means no date limit. Jobicy exposes the last 7 days.",
"editor": "number",
"maximum": 7,
"minimum": 0,
"title": "Posted Within (Days)",
"type": "integer"
},
"salaryDisclosedOnly": {
"default": false,
"description": "Keep only listings where Jobicy publishes a salary range.",
"title": "Only Jobs With Published Salary",
"type": "boolean"
}
},
"schemaVersion": 1,
"title": "Jobicy Remote Jobs Scraper 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 |
|---|---|---|---|
remoteJobs | string | optional | Dataset containing the scraped Jobicy remote-job and listing-status records. |
Download the published output schema
View complete JSON
{
"actorOutputSchemaVersion": 1,
"description": "Jobicy remote jobs with full descriptions, industries, job types, seniority, locations, salary (and annualised USD figures), optional expiry/company website/applicant countries, and live listing status.",
"properties": {
"remoteJobs": {
"description": "Dataset containing the scraped Jobicy remote-job and listing-status records.",
"template": "{{links.apiDefaultDatasetUrl}}/items",
"title": "Jobicy Remote Jobs",
"type": "string"
}
},
"title": "Jobicy Remote Jobs Scraper 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": "Remote Jobs",
"transformation": {
"fields": [
"title",
"company",
"location",
"jobTypes",
"jobLevel",
"salaryMin",
"salaryMax",
"salaryCurrency",
"publishedAt",
"jobUrl"
]
}
},
"statuses": {
"display": {
"component": "table",
"properties": {}
},
"title": "Job Statuses",
"transformation": {
"fields": [
"id",
"listingStatus",
"statusCheckedAt"
]
}
}
}
}
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
Jobicy Remote Jobs Scraper — Full 7-Day Feed & Filters
Jobicy publishes a rolling window of remote roles, and this actor reads the whole window rather than the first page. Search by keyword, location, industry, employment type, seniority, publication date or pay, and export complete job descriptions with structured salary, company and eligibility data. No login, API key or proxy is needed.
What this actor does
- Reads the complete current Jobicy feed — every listing in the rolling 7-day window, not a fixed sample.
- Filters by keyword, 54 supported locations, 22 industries, job type, seniority, publication date and salary.
- Returns the full plain-text description, excerpt, industries, job types, seniority, location, country eligibility and company logo.
- Keeps structured salary values and adds annualised figures, so hourly, monthly and yearly ranges are easier to compare.
- Optionally fetches each job page for the exact expiry date, company website and applicant countries, and can check whether listings are still active.
- Omits empty fields rather than returning placeholders or invented data.
Output per job
id— Jobicy's numeric job IDjobSlug— Jobicy listing slugtitle— job titlecompany— hiring companycompanyLogo— company logo URLcompanyUrl— company website (withincludeDetails)jobUrl— canonical Jobicy listing URLcategory— industries joined with;(legacy field)industries[]— industry labelsjobType— employment types joined with;(legacy field)jobTypes[]— employment type labelsjobLevel— Jobicy's seniority valuelocation— the job's remote eligibility textcountries[]— countries parsed from the eligibility textisWorldwide— true when the role is open anywhereexcerpt— short listing summarydescription— full plain-text job descriptionsalaryMin,salaryMax— published salary boundssalaryCurrency,salaryPeriod— pay currency and periodannualSalaryMin,annualSalaryMax— annualised pay, when a period is publishedpublishedAt— publication timestampageDays— days since publicationexpiresAt— listing expiry date (withincludeDetails)applicantCountries[]— eligible applicant countries (withincludeDetails)listingStatus—activewhen checked (withonlyActive)statusCheckedAt— when the status was checkedtags[]— the listing's industriesrecordType—jobsource—jobicyscrapedAt— when the record was collected
Output per status check
Mode status returns one record per requested job ID:
id— Jobicy job IDlistingStatus—active,closedorunknownstatusCheckedAt— when Jobicy checked the listingrecordType—jobStatussource—jobicyscrapedAt— when the record was collected
Input
| Field | Type | Default | Description |
|---|---|---|---|
mode |
string | search |
search the live feed, fetch byUrls, or check status |
keyword |
string | – | Full-text Jobicy search, 3-50 characters |
geo |
string | – | Location or region slug; worldwide roles match every location. Legacy names such as United States are mapped; Jobicy lists Malaysia but its jobs API rejects that filter, so Malaysia is not offered. |
industry |
string | – | One Jobicy category |
jobType |
string | – | Full-Time, Part-Time, Contract or Internship |
jobLevel |
string | – | Entry-Level, Junior, Midweight, Senior, Director or Internship; legacy Any keeps listings labeled Any |
postedWithinDays |
integer | 0 |
Keep jobs published in the last N days; 0 = no date limit |
salaryDisclosedOnly |
boolean | false |
Keep only jobs with a published salary |
minAnnualSalaryUsd |
integer | 0 |
Minimum annualised USD salary; other currencies are excluded |
excludeKeywords |
array | [] |
Drop jobs whose title or company contains these terms |
onlyActive |
boolean | false |
Keep only listings Jobicy reports as active |
includeDetails |
boolean | false |
Add expiry, company website and applicant countries |
jobUrls |
array | [] |
Jobicy URLs or numeric IDs (mode byUrls / status) |
maxItems |
integer | 50 |
Maximum job listings to return (1-5,000) |
Mode-scoped fields are read only in their intended mode. The daily prefill uses search with maxItems 3.
Example: all current jobs
{
"mode": "search",
"maxItems": 100
}
Example: senior Python roles open to applicants in the USA
{
"mode": "search",
"keyword": "python",
"geo": "usa",
"jobLevel": "Senior",
"jobType": "Full-Time",
"maxItems": 50
}
Example: paid roles with detail data
{
"mode": "search",
"industry": "engineering",
"salaryDisclosedOnly": true,
"minAnnualSalaryUsd": 120000,
"includeDetails": true,
"maxItems": 30
}
Example: fetch specific listings and check stored IDs
{
"mode": "byUrls",
"jobUrls": [
"https://jobicy.com/jobs/156858-senior-software-engineer-fundraising-remote",
"156864"
],
"maxItems": 10
}
{
"mode": "status",
"jobUrls": ["156858", "156864", "147122"]
}
Use cases
- Recruiters — build a daily shortlist of fresh remote roles by function, region and seniority.
- Job boards and newsletters — feed complete, structured listings into a site, digest or alerts.
- Compensation research — compare published salary ranges across industries and locations.
- Talent-market analysis — track remote hiring by category, type, level and country eligibility.
- Job seekers — export only roles that are open to their location and still active.
FAQ
Where does the data come from?
Jobicy's public job feed and public job pages. No Jobicy account, login or API key is required. Each run reads Jobicy live; publishedAt and ageDays show freshness.
Is this affiliated with Jobicy? No. This is an independent third-party actor that reads publicly available Jobicy listings.
How many jobs can one run return?
The complete current 7-day window, up to maxItems (maximum 5,000). The window usually contains roughly 1,000-1,500 roles; when it is exhausted, the run says so instead of returning invented data.
Why is salary missing on some jobs? Only about half of current Jobicy listings publish structured pay. Missing salary fields are omitted, never estimated. A small number of source listings also contain unusual salary values; they are passed through unchanged for transparency.
What is the difference between location and countries?
location is Jobicy's own eligibility text. countries[] is the same text split into country names, and isWorldwide flags roles open anywhere.
Why is Malaysia not in the location list?
Jobicy's own location taxonomy lists Malaysia, but its jobs API rejects geo=malaysia with HTTP 400. The actor therefore offers the 54 usable locations. If a legacy task sends Malaysia, the filter is ignored with a clear status message instead of stopping the run.
When should I enable includeDetails?
Enable it when you need the exact expiry date, company website or applicant countries. It fetches each job page and can be slower; if a page is unavailable, the job is still returned with its feed fields and the optional fields are omitted.
What does onlyActive do?
It asks Jobicy for each listing's current status and keeps only active jobs. Use mode status when you want to check stored IDs without re-scraping the listings.
Does the actor return the employer's own application link? No. Jobicy's public feed returns the Jobicy listing URL, and the employer application step is handled on Jobicy's site. The actor never substitutes an unrelated or invented apply URL.
Can I fetch a job that is older than seven days?
The search feed only covers the last seven days. If you already have a Jobicy job URL that is still live, mode byUrls can open it directly; mode status can check stored IDs outside the window.
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 jVhcKYfKlFmoj7cg0. Documentation is regenerated from the default published build; private drafts are not included.