Remotive Remote Jobs Scraper & Salary API
Pricing
from $6.15 / 1,000 results
Remotive Remote Jobs Scraper & Salary API
Scrape Remotive remote jobs with no API key: title, company, company website, category, skill tags, salary parsed to min/max/currency, candidate location, job type, seniority, posting date, apply URL and full HTML/text description. 13 filters, salary sort. Work-from-home jobs feed. JSON/CSV/Excel.
Pricing
from $6.15 / 1,000 results
Rating
0.0
(0)
Developer
Scrapers Lat
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
5 days ago
Last modified
Categories
Share
Remotive Remote Jobs Scraper & Salary API
The most complete Remotive scraper on Apify, and a keyless remote jobs API: no API key, no login. It returns every field the Remotive remote job board exposes for each listing, adds parsed salary numbers (min, max, currency, period), a company website URL, seniority, a freshness score and structured applicant countries, and gives you 13 filters to target exactly the remote jobs you need. Use it as a remote-work data feed for job boards and aggregators, salary benchmarking, recruiting, work-from-home job search and hiring-trend analysis.
Here is one real result, with every field the actor returns (descriptionHtml and descriptionText trimmed for readability):
{"companyLogo": "https://remotive.com/job/2091068/logo","companyLogoUrl": "https://remotive.com/job/2091068/logo","jobId": "2091068","title": "Head of Marketing & Communications","company": "garden3d","companyUrl": "https://garden3d.net/","category": "Marketing","categorySlug": "marketing","jobType": "contract","seniority": "lead","candidateRequiredLocation": "Worldwide","isRemote": true,"applicantCountries": ["US", "CA", "BR", "MX", "GB", "DE", "FR"],"workplaceType": "TELECOMMUTE","salary": "$150k - $230k","salaryMin": 150000,"salaryMax": 230000,"salaryCurrency": "USD","salaryPeriod": "YEAR","salaryMentioned": true,"publicationDate": "2026-08-15T19:58:15","validThrough": "2026-09-15T19:58:15","ageDays": 11,"freshnessScore": 0.63,"url": "https://remotive.com/remote-jobs/marketing/head-of-marketing-communications-2091068","applyUrl": "https://remotive.com/remote-jobs/marketing/head-of-marketing-communications-2091068","tags": ["marketing", "communications", "brand", "content", "project management"],"tagsCount": 11,"descriptionHtml": "<p>garden3d is looking for a Head of Marketing & Communications...</p>","descriptionText": "garden3d is looking for a Head of Marketing & Communications to lead brand and content across our studios.","descriptionLength": 14361,"source": "remotive","observedAt": "2026-08-26T21:32:10.000Z","error": null}
📥 Input · 📤 Output · 💰 Pricing · ▶️ Examples
Table of contents
- What it does
- How we compare
- Use cases
- Quickstart
- Input reference
- Output reference
- Run via API and CLI
- Fetch results
- Billing and limits
- FAQ and troubleshooting
What it does
This is a Remotive remote jobs scraper and remote-work data API. It reads the Remotive remote job feed, applies your filters on our side, and writes one clean record per job to the run dataset. Each record carries the title, company, company website, category, skill tags, salary text plus parsed salary numbers (min, max, currency, period), candidate location, structured applicant countries, employment type, seniority, posting date, application deadline, freshness score, apply URL, and both an HTML and a plain-text description. Every listing is a remote / work-from-home role (isRemote: true). Missing source values are returned as null. An optional paid detail add-on enriches each job with the company website, application deadline, applicant countries and workplace type. No login or API key is needed. Export to JSON, CSV or Excel.
How we compare
There are a handful of Remotive scrapers on Apify. This one returns the widest set of valid fields and the most filters. Where a rival genuinely wins, we say so.
| Capability | This actor (scrapers_lat) | dami_studio/remotive-jobs-scraper | neuton/remotive-remote-jobs-scraper | wfh_scout/remotive-jobs-scraper | Multi-board aggregators |
|---|---|---|---|---|---|
| Filters (inputs) | 13 (keyword, category, company, job type, seniority, tags, location, salary min, salary-only, date, sort, max, detail add-on) | 3 (search, category, max) | 3 (search, category, max) | ~8 (keyword, region, type, seniority, salary min, age, ghost-risk, max) | keyword, salary, date |
| Parsed salary (min/max/currency/period) | Yes | No (raw text only) | No (raw text only) | Yes | Varies |
| Company website URL | Yes | No | No | No | No |
| Full HTML and plain-text description | Both | Text only | Text only | Description only | Usually truncated |
| Seniority + freshness score | Yes | No | No | Yes (freshness + ghost-risk) | No |
| Structured applicant countries + deadline + workplace type | Yes | No | No | No | No |
| No API key / no login | Yes | Yes | Yes | Yes | Varies |
| Price per result | 0.008 | 0.002 | 0.003 | from 0.002 | ~0.002 |
Honest trade-offs:
- The cheaper actors (dami_studio, neuton, wfh_scout, and the multi-board aggregators) cost less per result. We charge more because we return far more valid fields per job (parsed salary, company website, structured countries, deadline, seniority, freshness, full HTML and plain text) and offer 13 filters. If you only need id, title and URL at the lowest price, a $0.002 actor is enough.
wfh_scoutadds a ghost-job risk band and reasoning that we do not compute. If ghost-job scoring is your priority, look there.- Multi-board aggregators pull RemoteOK, We Work Remotely, Himalayas and others alongside Remotive in one run. If you want many boards in one feed, use an aggregator (or run our sibling actors for RemoteOK and Himalayas too).
Use cases
- Remote job aggregators and job boards: ingest a clean, deduped Remotive feed with company website, apply URL and normalized salary.
- Salary benchmarking and remote-work research: use
salaryMin,salaryMax,salaryCurrencyandsalaryPeriodto compare pay across categories and seniority. - Recruiting and sourcing: filter by category, seniority, job type and skill tags to find live remote openings, then pull the company website.
- Lead generation: identify companies actively hiring remotely and, with the detail add-on, attach each company's website URL for outreach.
- Market and hiring-trend analysis: track posting dates, freshness and applicant countries over time.
- Work-from-home job search: filter live remote openings by keyword, category, seniority and salary, sorted newest or highest-paid first.
Quickstart
Open the actor, paste this into the input, and press Run. It returns the 25 most recent remote jobs, newest first.
{"maxJobs": 25,"sortBy": "publication_date_desc"}
Narrow the feed with any filter, for example software engineering roles that publish a salary, highest first:
{"categories": ["software-development"],"jobTypes": ["full_time", "contract"],"salaryOnly": true,"sortBy": "salary_desc","maxJobs": 50}
Input reference
Every field is optional. With an empty input the actor returns the most recent remote jobs. Filters are applied on our side, so they take effect even when the source ignores server-side filtering.
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
searchQueries | array | no | (empty) | Keep jobs whose title, company, tags, location or description contain ANY of these keywords (OR match). |
categories | array | no | (all) | Keep only jobs in these categories, for example software-development, design, marketing, data. |
companies | array | no | (all) | Keep only jobs whose company name contains ANY of these values. |
jobTypes | array | no | (all) | Keep only these employment types: full_time, part_time, contract, freelance, internship, other. |
seniority | array | no | (all) | Keep only these seniority bands (derived from the title): junior, mid, senior, lead, internship. |
tags | array | no | (all) | Keep only jobs carrying ANY of these skill tags, for example aws, figma, seo. |
location | string | no | (empty) | Keep only jobs whose required candidate location contains this text, for example USA, Europe. |
salaryOnly | boolean | no | false | Keep only jobs that publish a salary. |
minSalary | integer | no | (empty) | Keep only jobs whose parsed maximum salary is at least this number. |
postedWithinDays | integer | no | (empty) | Keep only jobs published within this many days. |
sortBy | enum | no | publication_date_desc | Order results: newest/oldest, highest/lowest salary, title, or company. |
maxJobs | integer | no | 25 | Maximum number of jobs to collect. |
withDetails | boolean | no | true | Paid add-on (paying accounts). Fetch each listing page to add company website, deadline, applicant countries and workplace type. Billed as a detail record only when extra data is found. |
Output reference
One dataset item per job. Types are string, number, boolean, string[], or null when absent.
| Field | Type | Description |
|---|---|---|
jobId | string | Remotive job id (unique per listing). |
title | string | Job title. |
company | string | Hiring company name. |
companyUrl | string | Company website URL. Populated when the detail add-on runs, else null. |
companyLogo / companyLogoUrl | string | Company logo image URL. |
category | string | Remotive category name. |
categorySlug | string | Category as a URL-safe slug. |
jobType | string | Employment type, for example full_time, contract, freelance. |
seniority | string | Seniority band derived from the title, or null. |
candidateRequiredLocation | string | Where candidates may be based. |
isRemote | boolean | Always true; every Remotive listing is a remote / work-from-home role. |
applicantCountries | string[] | Structured applicant country codes. Populated by the detail add-on. |
workplaceType | string | Workplace type, for example TELECOMMUTE. Detail add-on. |
salary | string | Salary text as published, or null. |
salaryMin / salaryMax | number | Parsed salary bounds, or null. |
salaryCurrency | string | Parsed currency (USD, EUR, GBP), or null. |
salaryPeriod | string | Parsed period (HOUR, DAY, WEEK, MONTH, YEAR), or null. |
salaryMentioned | boolean | True when the listing publishes a salary. |
publicationDate | string | ISO 8601 posting timestamp. |
validThrough | string | Application deadline. Detail add-on, or null. |
ageDays | number | Whole days since the job was posted. |
freshnessScore | number | 0 to 1, where 1 is posted today and 0 is 30+ days old. |
url / applyUrl | string | Remotive listing page URL (apply link). |
tags | string[] | Skill / keyword tags. |
tagsCount | number | Number of skill tags. |
descriptionHtml | string | Full job description with original HTML markup. |
descriptionText | string | Full job description as plain text. |
descriptionLength | number | Character length of the plain-text description. |
source | string | Data source label (remotive). |
observedAt | string | ISO 8601 collection timestamp. |
error | string | null on success; a single item with a populated error is written on a failed run. |
Run via API and CLI
Start a run and read the dataset. Replace <TOKEN> with your Apify API token.
Run synchronously and get dataset items in one call:
curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~remotive-jobs-scraper/run-sync-get-dataset-items?token=<TOKEN>" \-H "Content-Type: application/json" \-d '{"categories":["software-development"],"salaryOnly":true,"sortBy":"salary_desc","maxJobs":25}'
Start a run asynchronously:
curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~remotive-jobs-scraper/runs?token=<TOKEN>" \-H "Content-Type: application/json" \-d '{"searchQueries":["react","vue"],"maxJobs":100}'
Apify CLI:
apify call scrapers_lat/remotive-jobs-scraper \--input '{"tags":["aws"],"maxJobs":50}'
Fetch results
Every run writes to a dataset. Fetch items as JSON, CSV, or Excel by changing format:
# JSONcurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=json"# CSVcurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=csv"# Paginate large datasetscurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&offset=1000&limit=1000"
<DATASET_ID> is returned as defaultDatasetId in the run object.
Billing and limits
- Pay per result. You are charged per job returned (
resultevent). See the pricing tab for the current per-result price. - Detail add-on. When
withDetailsis on (paying accounts, on by default), each job that gains company website, deadline, applicant countries or workplace type is billed onedetailsevent. It is charged only after the job's result row is delivered, and only when extra data is actually found. Turn it off to skip those fields and the charge. - No charge on failure. If a run errors, the actor writes a single item with a populated
errorfield and does not charge. Empty runs cost nothing. - Spend cap respected. Set
maxTotalChargeUsdon the run; once reached, the actor stops emitting and charging. - Free Apify plans are capped at 10 jobs per run and cannot use the paid detail add-on.
- Source coverage. Remotive's public feed currently exposes a limited window of its most recent listings and does not honor its own server-side category or keyword filtering. Our filters run on our side so they always apply, but the total pool per run is whatever Remotive currently publishes.
FAQ and troubleshooting
How many jobs can I get per run? As many as Remotive currently publishes in its public feed, filtered by your inputs. The feed is a rolling window of recent listings, so a broad run typically returns a few dozen fresh jobs rather than the entire historical archive.
Why did a category or keyword filter return few jobs? The source feed is a limited recent window and its own server-side filters are unreliable, so we filter on our side. If a narrow filter matches little, the window simply did not contain many matching jobs at that moment. Zero-result runs are not charged.
Is the salary parsed into numbers?
Yes. Alongside the raw salary text we return salaryMin, salaryMax, salaryCurrency and salaryPeriod whenever the text contains numbers. Listings without a salary return null for these and salaryMentioned: false.
Where does companyUrl come from?
From the listing page, read only when the withDetails add-on runs. It is the company website Remotive links to. With the add-on off, companyUrl is null.
What is the difference between descriptionHtml and descriptionText?
descriptionText is plain text suitable for analysis; descriptionHtml preserves the original HTML markup. Both are full length.
Can I use this as a Remotive API without an API key?
Yes. It works as a keyless remote jobs API: start a run over the Apify API or CLI, or call run-sync-get-dataset-items to get results in one request. No Remotive account, login or API key is required. See Run via API and CLI.
Is this an official Remotive tool? No. This actor is independent and has no affiliation with Remotive. It reads only publicly available Remotive data. Use it in accordance with Remotive's terms.
Related scrapers
- RemoteOK Remote Jobs & USD Salary Scraper: remote jobs from RemoteOK with USD salary ranges.
- Himalayas Remote Jobs Scraper: remote jobs from Himalayas.
- Reed.co.uk UK Jobs & Salary Scraper: UK job listings with salary ranges.
- Greenhouse Jobs Scraper: jobs from Greenhouse-hosted career pages.
- Ashby Jobs Scraper: jobs from Ashby-hosted career pages.
More scrapers at scrapers.lat
Built and maintained by scrapers.lat, where we publish scrapers for US and Latin American public platforms: company registries, government data, finance, e-commerce and more. Browse the catalog or request a custom scraper at scrapers.lat.
Independent tool, not affiliated with Remotive. Accesses only publicly available Remotive data. Use in accordance with Remotive's terms.
