Remotive Jobs Scraper – Salaries & Filters
Pricing
from $0.02 / 1,000 result extracteds
Remotive Jobs Scraper – Salaries & Filters
Export public Remotive remote jobs across 30 categories with keyword, company, location, job type, salary, and date filters plus full descriptions.
Pricing
from $0.02 / 1,000 result extracteds
Rating
0.0
(0)
Developer
Hanna Nosova
Maintained by CommunityActor stats
0
Bookmarked
7
Total users
5
Monthly active users
a day ago
Last modified
Categories
Share
Export the current public Remotive remote-job feed across 30 categories. Filter by keyword, company, location, category, job type, disclosed salary, or publication window, and receive clean descriptions, salary structure, seniority hints, tags, monitoring-ready IDs, and canonical Remotive links.
Use this Actor for remote hiring intelligence, job alerts, talent-market research, salary analysis, lead generation, newsletters, job boards, spreadsheets, APIs, MCP tools, and AI workflows. Results are available as JSON, CSV, Excel, XML, RSS, or through the Apify Dataset API.
At a glance
- 30 Remotive categories: software, AI, data, design, marketing, sales, support, finance, HR, QA, operations, legal, medical, education, and more.
- Full-record keyword matching: search title, company, category, job type, location, salary, tags, and description—not only the upstream title/description search.
- Salary-ready output: keep original salary text and get parsed minimum, maximum, currency, and period when the text supports them.
- Monitoring controls: use inclusive publication dates, listing age, stable job IDs, and canonical URLs for scheduled workflows.
- Reliable upstream handling: retries temporary network, rate-limit, and server failures; detects malformed or changed API responses; records a
RUN_SUMMARY. - Backward compatible: existing inputs and output fields remain available; all new controls and fields are additive.
What can it do?
Remotive Jobs Scraper converts the current public Remotive feed into analysis-ready job rows. It validates the source response, applies every selected filter consistently, keeps source links for attribution, stores one row per matching job, and reports whether an empty dataset was a legitimate filtered search or a failed source request.
Ready-to-run examples
Open a saved example to prefill the input, then adjust its filters for your workflow.
- Customer Success Jobs
- Product Design Jobs
- Weekly New Remote Jobs
- SaaS Remote Jobs
- AI Remote Jobs
- Startup Remote Jobs
- View all 24 examples
Common workflows
- Track fresh remote roles by skill, category, job type, or region.
- Find companies actively hiring remotely for recruiting or sales research.
- Build salary-transparency datasets from listings with disclosed compensation.
- Feed job newsletters, alerts, dashboards, CRMs, ATS tools, or job boards.
- Compare demand for skills, seniority levels, functions, and locations over time.
- Schedule recurring runs and deduplicate downstream by
idorurl.
Input configuration
All filters are optional. Multiple filters are combined with AND logic.
| Setting | JSON key | Description | Example |
|---|---|---|---|
| Keyword | search | Case-insensitive match across all useful text fields. | python |
| Category | category | Partial Remotive category name or slug. | Software Development |
| Company | company | Partial company-name match. | GitLab |
| Candidate location | candidateLocation | Match Remotive's candidate-location requirement. | Europe |
| Job types | jobTypes | Include one or more job types. | ["full_time", "contract"] |
| Require salary | requireSalary | Keep only listings with disclosed salary text. | true |
| Minimum salary | minimumSalary | Minimum parsed salary in the listing's own period. | 100000 |
| Maximum jobs | limit | Stop after this many matching rows; 1–1,000. | 50 |
| Maximum age | maxAgeDays | Keep jobs no older than this many days. | 14 |
| Published after | publishedAfter | Inclusive date or ISO timestamp. | 2026-07-01 |
| Published before | publishedBefore | Inclusive date or ISO timestamp. | 2026-07-31 |
| Description HTML | includeDescriptionHtml | Add original HTML alongside clean text. | false |
| Run safety limit | runTimeSecs | Stop retrying before the platform timeout; 30–270 seconds. | 240 |
Example input
{"search": "python","category": "Software Development","candidateLocation": "Europe","jobTypes": ["full_time", "contract"],"requireSalary": true,"publishedAfter": "2026-07-01","limit": 50,"includeDescriptionHtml": false}
Output fields
Each dataset row represents one public Remotive listing.
| Field | Description |
|---|---|
id | Stable Remotive job ID |
title | Job title |
companyName | Hiring company |
companyLogoUrl | Public company-logo URL when available |
category | Remotive category |
jobType | Original Remotive job type |
jobTypeNormalized | Normalized job type for filtering and analysis |
candidateRequiredLocation | Candidate region or location requirement |
salary | Original disclosed salary text, or null |
salaryMin, salaryMax | Parsed salary endpoints when detectable |
salaryCurrency | Detected USD, EUR, or GBP, or null |
salaryPeriod | Detected hour, day, week, month, or year |
publicationDate | Original publication timestamp |
publicationDateIso | Normalized UTC timestamp |
seniority | Title/tag-derived seniority hint when detectable |
tags | Remotive skills and topic tags |
descriptionText | Clean full-description text |
descriptionHtml | Optional original HTML description |
url, sourceUrl | Canonical Remotive listing URL for attribution |
fetchedAt | Actor fetch timestamp |
Example output
{"id": 2091062,"title": "Senior Product Engineer (Fullstack)","companyName": "Clipster","companyLogoUrl": "https://remotive.com/job/2091062/logo","category": "Software Development","jobType": "full_time","jobTypeNormalized": "full time","candidateRequiredLocation": "Europe, UK, Germany, France, European timezones","salary": "$120k - $170k / year","salaryMin": 120000,"salaryMax": 170000,"salaryCurrency": "USD","salaryPeriod": "year","publicationDate": "2026-07-13T07:05:10","publicationDateIso": "2026-07-13T07:05:10.000Z","seniority": "senior","tags": ["golang", "react", "AI/ML"],"descriptionText": "About the company...","url": "https://remotive.com/remote-jobs/software-development/senior-product-engineer-fullstack-2091062","sourceUrl": "https://remotive.com/remote-jobs/software-development/senior-product-engineer-fullstack-2091062","fetchedAt": "2026-07-14T12:00:00.000Z"}
Run summary and empty results
Every completed request writes RUN_SUMMARY to the default key-value store. It includes upstream and saved counts, malformed/duplicate/filter counts, and status:
SUCCEEDED: one or more rows were saved.EMPTY_FILTERED: the upstream feed was valid, but no current listing matched all filters. This is a successful empty search, not an upstream failure.FAILED: input, network, rate-limit, schema, storage, or billing processing failed. The Actor run also fails instead of reporting a misleading green empty result.
Pricing
This Actor uses pay-per-event pricing. The values below exactly match the current Actor pricing configuration; active pricing is not estimated from database notes.
| Event | What is charged | Free | Bronze | Silver | Gold | Platinum | Diamond |
|---|---|---|---|---|---|---|---|
start | Once after input validation and before the upstream request | $0.005 | $0.005 | $0.005 | $0.005 | $0.005 | $0.005 |
result | Per job row stored in the dataset | $0.043783 / 1K | $0.038072 / 1K | $0.029696 / 1K | $0.022843 / 1K | $0.015229 / 1K | $0.010660 / 1K |
Apify may separately charge platform usage for compute, storage, or data transfer according to your plan. Check the run and Pricing tab for the exact amount shown to your account.
Accuracy and salary notes
- Salary parsing is best effort. A listing can mix currencies, periods, approximate values, or prose that cannot be normalized safely; original
salarytext is always retained. minimumSalarycompares the parsed number in the listing's own period. Do not mix hourly and annual listings in one numeric comparison unless your downstream workflow normalizes periods.seniorityis an additive title/tag-derived hint, not an employer-certified level.- Fields can be empty when the employer did not publish them.
Source limits and attribution
This Actor reads Remotive's official public remote-jobs API. Remotive states that public API jobs are delayed by 24 hours, advises no more than four fetches per day, and may block excessive traffic above two requests per minute. The Actor performs one feed request per run and retries temporary limits with backoff, but schedules should still respect those limits.
Remotive also requires downstream displays to link to the supplied Remotive URL and identify Remotive as the source. Keep sourceUrl when republishing permitted data and review the official Remotive API terms and documentation.
API examples
cURL
curl -X POST 'https://api.apify.com/v2/acts/fetch_cat~remotive-jobs-scraper/runs?token=YOUR_APIFY_TOKEN' \-H 'Content-Type: application/json' \-d '{"search":"python","candidateLocation":"Europe","publishedAfter":"2026-07-01","limit":50}'
JavaScript / Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('fetch_cat/remotive-jobs-scraper').call({search: 'python',candidateLocation: 'Europe',limit: 50,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
Python
from apify_client import ApifyClientclient = ApifyClient("YOUR_APIFY_TOKEN")run = client.actor("fetch_cat/remotive-jobs-scraper").call(run_input={"search": "python","candidateLocation": "Europe","limit": 50,})items = client.dataset(run["defaultDatasetId"]).list_items().itemsprint(items)
MCP and AI agents
Use the Actor through the official Apify MCP server:
$claude mcp add apify --transport http https://mcp.apify.com?tools=fetch_cat/remotive-jobs-scraper
{"mcpServers": {"apify": {"url": "https://mcp.apify.com?tools=fetch_cat/remotive-jobs-scraper"}}}
https://mcp.apify.com?tools=fetch_cat/remotive-jobs-scraper
Example prompts:
- "Export current Remotive software jobs that accept candidates in Europe."
- "Find Remotive jobs with disclosed annual salary and Python in any field."
- "Return Remotive contract roles published since July 1, with clean descriptions."
Use the same JSON keys shown in the input table. Agent-readable input, output, and dataset schemas are included in the published Actor build.
FAQ
Why did my run return zero rows?
Your filters may not match the current active public feed. Open RUN_SUMMARY: EMPTY_FILTERED means the feed was healthy and zero listings matched. Broaden the keyword, category, location, salary, or date window.
Does keyword search include company names and tags?
Yes. The Actor fetches the active feed once and applies keyword matching locally across title, company, category, job type, location, salary, tags, and description.
Can I monitor only newly published jobs?
Yes. Use publishedAfter or maxAgeDays, schedule the Actor, and deduplicate by id or url downstream.
Are all salaries annual and in USD?
No. Salary period and currency vary by listing. Use salaryCurrency and salaryPeriod, and keep the original salary text for auditability.
Can I export CSV or Excel?
Yes. Download the dataset as CSV, JSON, Excel, XML, RSS, or access it through the API.
Related Actors
- RemoteOK Jobs Scraper
- ATS Jobs Scraper
- Lever Jobs Scraper
- Greenhouse Job Board Scraper
- SmartRecruiters Jobs Scraper
Support
If a run fails, returns an unexpected empty dataset, or a field looks wrong, open an issue from the Actor page. Include the run ID or URL, input JSON, one reproducible public URL or search, expected output, actual output, and RUN_SUMMARY.
Privacy and responsible use
This Actor processes public Remotive job listings and stores results in your Apify run storage. FetchCat does not use inputs or outputs for advertising or model training and does not retain them outside Apify run storage except when you explicitly share details for support. Use the Actor lawfully, comply with Remotive's API terms and attribution requirements, preserve canonical source links when required, and avoid unnecessary personal or sensitive data.