
Global Sources Supplier Scraper
scrape.ly/store/cornerledger/globalsources-scraperLead generationE-commerce
2 monthly users

Scrape remote jobs from Remotive: title, company, category, seniority, job type, salary, candidate locations, skills, full description, apply link, posted and expiry dates. Search by keyword, category or link and filter by level, type, location, language, salary and date. No login needed.
Turn Remotive, one of the best-known remote job boards, into a clean dataset of remote jobs: title, company, category, seniority, job type, salary, candidate locations, skills, the full description, the employer's apply link and posting and expiry dates. Search by keyword, category or Remotive link, filter by level, type, location, language, salary and date, and get results in seconds. No login, no API key.
salaryMin, salaryMax, salaryCurrency and salaryPeriod (year, month, hour, ...).python or customer success), pick categories, or paste Remotive links.| Field | What it does |
|---|---|
searchTerms | Keywords (job title, skill, company). Each keyword is its own search. |
categories | Remotive categories such as software-development, marketing, data, customer-service. |
startUrls | Remotive links: category pages, search links with filters, topic pages or single job links. |
maxResults | Maximum jobs to save, newest first (default 20). |
seniority, jobTypes, locations, languages, skills | Filters that Remotive applies on its side. |
postedWithin, minSalary, onlyWithSalary, excludeKeywords | Date, pay and title filters. |
includeDescription | Open each job page for the description and details (on by default). |
With no keywords, categories or links, the scraper returns the newest jobs on the whole board.
{
"searchTerms": ["python"],
"seniority": ["senior"],
"locations": ["Europe"],
"postedWithin": "last-30-days",
"maxResults": 50
}
| Field | Description |
|---|---|
id, url | Remotive job id and job page |
applyUrl | The employer's apply link, when Remotive shows it publicly |
title, companyName, companyLogoUrl, companyWebsite | Job and company |
category, occupation, seniority, jobType, employmentType | Classification |
skills | Skill tags |
locations, location, regions, timezoneRestrictions, applicantCountryCodes | Where candidates may live |
salary, salaryMin, salaryMax, salaryCurrency, salaryPeriod | Published pay, parsed |
postedAt, expiresAt, ageDays, ghostRisk, ghostReasons | Dates and staleness |
isFeatured, isPinned, isRemotivePost | Site badges |
description, descriptionHtml | Full description (when includeDescription is on) |
Example (from a test run, description shortened):
{
"id": "6322166",
"url": "https://remotive.com/remote/jobs/software-development/python-software-architect-6322166",
"applyUrl": "https://brightvisiontechnologies.applytojob.com/apply/1xhlGJjYIz/Python-Software-Architect",
"title": "Python Software Architect",
"companyName": "Bright Vision Technologies",
"companyLogoUrl": "https://remotive.com/job_board/job/logo/6322166",
"companyWebsite": "https://bvteck.com",
"category": "Software Development",
"occupation": "software architect",
"seniority": "senior",
"jobType": "full-time",
"skills": ["python", "software architecture", "data engineering", "agile", "ci/cd"],
"locations": ["USA"],
"location": "USA",
"regions": ["usa"],
"timezoneRestrictions": [],
"salary": "$100,000–$150,000 annually",
"salaryMin": 100000,
"salaryMax": 150000,
"salaryCurrency": "USD",
"salaryPeriod": "year",
"postedAt": "2026-10-20T14:35:36Z",
"expiresAt": "2027-01-21T09:43:30Z",
"isFeatured": false,
"isPinned": false,
"isRemotivePost": false,
"remote": true,
"source": "Remotive",
"description": "Role Description\n\nWe are seeking an experienced Python Software Architect to design, build, and continuously enhance complex enterprise-grade applications ...",
"applicantCountryCodes": ["US"],
"employmentType": "FULL_TIME",
"detailsScraped": true,
"ageDays": 0.88,
"ghostRisk": "low",
"ghostReasons": ["recent and not expired"],
"scrapedAt": "2026-10-21T11:38:16Z"
}
You pay $4.50 per 1,000 jobs saved ($0.0045 per job), with the full description and job-page details included. For example, 1,000 jobs ≈ $4.50 plus a few cents of platform usage (compute and datacenter proxy traffic, typically well under $0.05 for 1,000 jobs). Runs that find nothing cost only that small platform usage. You can cap any run with a maximum charge, and the scraper stops cleanly when the cap is reached.
Is it legal to scrape Remotive?
The scraper reads only public pages and the jobs Remotive shows to visitors without an account. Remotive asks that its jobs link back to the Remotive job page and name Remotive as the source; every row has the url of the job page so you can do that. Check Remotive's terms for your use case.
Do I need a Remotive account, login or proxy? No. No account is used. Datacenter proxies are set by default and work well.
How many results can I get? Remotive shows visitors about 20 jobs per search plus its featured posts. The scraper splits your search into narrower searches (by category, seniority, job type and language) to collect more, with no cap of its own. Jobs that Remotive reserves for its paying members are not collected; when that limits a run, the status message says so.
Why is a field empty?
Remotive does not publish every field for every job: many jobs have no salary or seniority, and the apply link is only filled when Remotive shows it publicly. Empty fields are null or an empty list.
Can I schedule it or use the API?
Yes. Schedule daily runs and use postedWithin = last-24h to collect only new jobs, or start runs through the API and read the dataset in JSON, CSV or Excel.
ghostRisk is a simple rating from the posting and expiry dates, not a verdict on the employer.salary.Every field below can be set in the run form, passed through the API, or saved as a task. Unset fields fall back to the defaults shown.
searchTermsarrayOptionalKeywords
Job titles, skills or companies to search for, for example python, product designer or customer success. Each keyword is its own search. Leave keywords, categories and links empty to get the newest jobs on the whole board.
categoriesarrayOptionalCategories
Remotive job categories. With keywords, the keywords are searched inside these categories.
startUrlsarrayOptionalRemotive links
Remotive pages to scrape: category pages (remotive.com/remote-jobs/software-development), search links with their filters (remotive.com/remote-jobs?query=react&location=Germany), topic pages (remotive.com/remote-python-jobs, remotive.com/remote-jobs/cl-senior) or single job links.
maxResultsintegerOptionaldefault 20Max results
Maximum number of jobs to save, newest first. Use 0 for as many as Remotive shows.
All filters are optional and combine with AND. They apply to keywords, categories and list links (not to single job links).
seniorityarrayOptionalSeniority
Keep jobs at these experience levels.
jobTypesarrayOptionalJob types
Keep jobs of these employment types.
locationsarrayOptionalCandidate locations
Keep jobs open to candidates in these countries or regions, as Remotive names them: USA, UK, Germany, Canada, Europe, Latin America (LATAM), Worldwide, ... Jobs open worldwide count for every country, like on the site.
languagesarrayOptionalPosting language
Keep jobs written in these languages.
skillsarrayOptionalSkills
Keep jobs tagged with any of these skills, for example aws, sql or figma.
postedWithinenumOptionalPosted within
Keep jobs posted in this period.
minSalaryintegerOptionalMinimum yearly salary (USD)
Keep jobs whose published pay reaches at least this yearly amount, as Remotive converts it. Jobs without a published salary are left out when this is set.
onlyWithSalarybooleanOptionaldefault falseOnly jobs with a salary
Skip jobs that do not show a salary.
excludeKeywordsarrayOptionalExclude title keywords
Skip jobs whose title contains any of these words, for example intern or sales.
includeDescriptionbooleanOptionaldefault trueInclude description
Open each job page for the full description (text and HTML), the expiry date, the company website, the applicant country codes and the schema.org employment type. Included in the job price; turn off for a faster, lighter run.
proxyConfigurationobjectOptionaldefault {"useScrapelyProxy":true,"scrapelyProxyGroups":["DATACENTER…Proxy configuration
Datacenter proxies work well for Remotive.
Every run writes its results to a dataset. Preview it in the dashboard, then export it or read it through the API.
| Field | Type | Description |
|---|---|---|
| id | string | null | Remotive job id |
| url | string | null | Job page on Remotive |
| applyUrl | string | null | Employer's apply link (when Remotive shows it publicly) |
| title | string | null | Job title |
| companyName | string | null | Company name |
| companyLogoUrl | string | null | Company logo |
| companyWebsite | string | null | Company website |
| category | string | null | Remotive category |
| occupation | string | null | Occupation as Remotive classifies it |
| seniority | string | null | entry-level, junior, mid-level, senior, lead, executive ... |
| jobType | string | null | full-time, part-time, contract, freelance ... |
| employmentType | string | null | schema.org employment type from the job page |
| skills | array | Skill tags |
| locations | array | Countries, regions and time zones candidates may live in |
| location | string | null | Candidate locations as one string |
| regions | array | Region tags: worldwide, usa, canada, latam, uk, europe, apac, africa, middle_east |
| timezoneRestrictions | array | Time zone requirements |
| applicantCountryCodes | array | ISO codes of the countries candidates may apply from |
| salary | string | null | Salary as published |
| salaryMin | number | null | Lower end of the salary |
| salaryMax | number | null | Upper end of the salary |
| salaryCurrency | string | null | Salary currency |
| salaryPeriod | string | null | year, month, hour, ... |
| postedAt | string | null | Posting date (UTC) |
| expiresAt | string | null | Expiry date (UTC) |
| ageDays | number | null | Days since posting |
| ghostRisk | string | null | low, medium or high: staleness from the posting and expiry dates |
| ghostReasons | array | Why the job got its rating |
| isFeatured | boolean | null | Highlighted on Remotive |
| isPinned | boolean | null | Pinned on top of searches |
| isRemotivePost | boolean | null | Posted directly on Remotive by the employer |
| remote | boolean | null | Always true: Remotive lists remote jobs only |
| source | string | null | Remotive |
| description | string | null | Full description as text |
| descriptionHtml | string | null | Full description as HTML |
| detailsScraped | boolean | null | The job page was read |
| scrapedAt | string | null | When the job was scraped (UTC) |
You pay for the events the actor reports, such as each result or page it produces. Platform usage is included in the event prices.
| Event | Charged when | Price |
|---|---|---|
| Job | One saved Remotive job with its full description and job page details | $0.0045 |
Run this actor from your own code. Swap in your API token and the examples work as-is.
import { ScrapelyClient } from 'scrapely-client'
const client = new ScrapelyClient({ token: process.env.SCRAPELY_TOKEN })
// Start the actor and wait for the run to finish.
const run = await client.actor('openrole/remotive-scraper').call({
"searchTerms": [
"python"
],
"startUrls": [],
"maxResults": 20,
"locations": [],
"skills": [],
"excludeKeywords": [],
"proxyConfiguration": {
"useScrapelyProxy": true,
"scrapelyProxyGroups": [
"DATACENTER"
]
}
})
// Read the dataset the run produced.
const { items } = await client.dataset(run.defaultDatasetId).listItems()
console.log(items)Tokens live in your account settings. Keep them server-side: a token carries the full permissions of your account.
Connect the Scrape.ly MCP server once and your agent can run this actor as a tool. Pick your tool:
Fetch scrape.ly/agents.md and run openrole/remotive-scraperPaste into Claude Code, Codex, Cursor or any AI agent. It signs you in once in the browser.
{
"mcpServers": {
"scrapely": {
"url": "https://api.scrape.ly/mcp?tools=actors,runs,storage,docs&actors=openrole/remotive-scraper"
}
}
}No key in the file: your client opens the browser to sign you in the first time it connects.
Inputs the developer prepared for common jobs. Open one to see its input, then copy it to your account to run it as-is or adjust it.
Category browse with a seniority filter.
A category page, a search link and a topic page.
Candidate location Germany and German-language postings.
Keyword with job type and salary filters.
Faster, lighter run with the description turned off.
Scrape.ly gives you the infrastructure, the tooling, and the team to extract, process, and operationalize web data at any scale. Setup takes minutes. The advantage lasts forever.