Jobspresso Remote Jobs Scraper — Jobs API & Apply Links avatar

Jobspresso Remote Jobs Scraper — Jobs API & Apply Links

Pricing

from $17.00 / 1,000 remote job records

Go to Apify Store
Jobspresso Remote Jobs Scraper — Jobs API & Apply Links

Jobspresso Remote Jobs Scraper — Jobs API & Apply Links

Scrape Jobspresso remote jobs by keyword, location, and category: title, company, description, apply link. A remote jobs API for job boards. $20 per 1,000.

Pricing

from $17.00 / 1,000 remote job records

Rating

0.0

(0)

Developer

Muhammad Afzal

Muhammad Afzal

Maintained by Community

Actor stats

0

Bookmarked

8

Total users

2

Monthly active users

10 days ago

Last modified

Security

Limited permissions

Share

Jobspresso Remote Jobs Scraper exports remote job listings from Jobspresso as JSON: job title, company, company website, remote location, category, employment type, posting date, full description, and the employer's application URL. It is built for recruiters, job-board builders, remote-work researchers, and AI agents, and costs USD 20 per 1,000 jobs on the Apify FREE tier (USD 17 per 1,000 on GOLD and above).

You can search by keyword, remote-eligibility location, Jobspresso category, and employment type, or paste Jobspresso archive URLs. Every run reads the live listings, removes duplicate jobs, and returns one clean record per job through the Apify API, MCP, or a dataset export (JSON, CSV, Excel).

What does the Jobspresso Remote Jobs Scraper return?

Each job is one dataset record with 18 fields. A value the listing does not publish is null, never guessed.

FieldWhat it contains
jobIdJobspresso job ID, for example 164284
titleJob title
company, companyTaglineEmployer name and its one-line tagline
companyWebsiteEmployer website
locationRemote-eligibility region, for example United States, Canada, Europe, or Asia-Pacific
remoteAlways true (Jobspresso lists remote roles only)
jobTypesJobspresso categories, for example developer, marketing, ai data
employmentTypesFor example full time or contract, when the listing is tagged
postedAtPosting timestamp
descriptionFull job description as plain text
salarySalary text when the listing publishes one (most do not)
applicationUrlWhere to apply, usually the employer's careers page or applicant tracking system
jobUrlThe Jobspresso job page
logoUrlCompany logo
source, searchQuery, scrapedAtSource site, the keyword that found the job (empty for the all-jobs search), and collection time

The fields description, companyWebsite, salary, applicationUrl, and employmentTypes come from each job's detail record, so they need includeDetails: true, which is the default.

How do I scrape Jobspresso remote jobs by keyword, location, or category?

Fill any combination of these filters; leave a filter empty to include everything.

{
"searchQueries": ["software engineer", "product manager"],
"locations": ["United States", "Europe"],
"jobTypes": ["developer", "product-mgmt"],
"employmentTypes": ["full-time"],
"maxResults": 100,
"maxPages": 5,
"includeDetails": true
}
  • Keywords and locations. The Actor runs one search for every keyword and location pair, so the input above runs four searches. Results are deduplicated by job ID across searches.
  • Categories (jobTypes). ai-data, designer, developer, marketing, various, product-mgmt, sales, support, writing. All nine are selected by default.
  • Employment types. full-time, part-time, contract, freelance, internship.
  • Archive URLs (startUrls). Paste URLs such as https://jobspresso.co/jobs/?search_keywords=python&search_location=Canada. The search_keywords and search_location parameters are used, and searchQueries and locations are then ignored.
  • Size. Jobspresso returns 20 jobs per result page. maxPages (1–20, default 3) caps pages per search, and maxResults (1–200, default 20) caps the whole run.
  • Faster, lighter runs. Set includeDetails: false to keep only the listing-card fields (title, company, tagline, location, category, posting date, logo, job URL).

How do I call it from code?

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('muhammadafzal/jobspresso-remote-jobs-scraper').call({
searchQueries: ['software engineer'],
locations: ['United States'],
jobTypes: ['developer', 'ai-data'],
maxResults: 50,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items.map((job) => `${job.company}: ${job.title} -> ${job.applicationUrl}`));
from apify_client import ApifyClient
client = ApifyClient("MY_APIFY_TOKEN")
run = client.actor("muhammadafzal/jobspresso-remote-jobs-scraper").call(run_input={
"searchQueries": ["customer support"],
"locations": ["Canada"],
"employmentTypes": ["full-time"],
"maxResults": 40,
})
jobs = client.dataset(run.default_dataset_id).list_items().items

You can also start it from Apify Console, a schedule, a webhook, Make, Zapier, or n8n.

Use it from an AI assistant

Jobspresso Remote Jobs Scraper works from Claude, ChatGPT, Cursor, or any MCP client through Apify's MCP server. Add https://mcp.apify.com/?tools=muhammadafzal/jobspresso-remote-jobs-scraper as a server and ask in plain language, for example: "Find 30 remote full-time developer jobs on Jobspresso open to people in Canada and list company, title, and the apply link." The assistant sees the input fields and the price per job before it runs the tool.

What does the output look like?

Two records from the default all-jobs run on 2026-10-26, with descriptions shortened:

[
{
"jobId": "164284",
"title": "Delivery Operations Analyst",
"company": "Cohere",
"companyTagline": "AI for Empowerment. We build private systems for enterprise, and open-source models for builders, to help people lead better lives.",
"companyWebsite": "https://cohere.com/",
"location": "Canada",
"remote": true,
"jobTypes": ["various"],
"employmentTypes": ["full time"],
"postedAt": "2026-10-25T07:41:35",
"description": "Who Are We? Cohere is the leading security-first enterprise AI company...",
"salary": null,
"applicationUrl": "https://jobs.ashbyhq.com/cohere/3906eb1d-932f-485a-8f77-e8cc31859fdd",
"jobUrl": "https://jobspresso.co/job/delivery-operations-analyst/",
"logoUrl": "https://jobspresso.co/wp-content/uploads/cohere-150x150.png",
"source": "https://jobspresso.co",
"searchQuery": "",
"scrapedAt": "2026-10-26T07:52:56.699Z"
},
{
"jobId": "164282",
"title": "Director of Product Management, Observability",
"company": "Elastic",
"companyWebsite": "https://www.elastic.co/",
"location": "United Kingdom",
"remote": true,
"jobTypes": ["product mgmt"],
"employmentTypes": [],
"postedAt": "2026-10-25T07:33:24",
"salary": null,
"applicationUrl": "https://jobs.elastic.co/jobs/engineering/united-kingdom/director-of-product-management-observability/8312171",
"jobUrl": "https://jobspresso.co/job/director-product-management-observability/"
}
]

Each run also writes SUMMARY and OUTPUT to the key-value store: status (data or empty), job count, result pages fetched, searches run, and warnings.

Pricing: how much do 1,000 Jobspresso jobs cost?

You pay per job delivered plus a small start fee. Platform usage is included in these prices.

EventFREEBRONZESILVERGOLDPLATINUMDIAMOND
Remote job record (each job)$0.02$0.019$0.018$0.017$0.017$0.017
Actor start, per started GB of allocated memory$0.005$0.005$0.005$0.005$0.005$0.005

The default run uses 1 GB of memory, so it pays one start event. Worked totals:

  • The default 20 jobs on FREE: $0.005 + 20 × $0.02 = $0.405.
  • The run maximum of 200 jobs on GOLD: $0.005 + 200 × $0.017 = $3.405.

Set maxResults and Apify's maximum total charge per run to bound spend. A search with no matches costs only the start fee.

When should I use it, and when not?

Use it when you need:

  • a feed of remote roles for a job board, newsletter, or Slack alert, refreshed on a schedule;
  • hiring-trend research: which companies hire remotely, in which categories and regions;
  • job descriptions and application links for an AI agent, matching tool, or RAG index.

Use something else when you need:

Limits and reliability

  • A run returns at most 200 jobs. For more, split the work across several runs with different keywords or categories.
  • salary is filled only when Jobspresso publishes pay; none of the 20 jobs in the 2026-10-26 default run did.
  • The default 20-job run with details took about 25 seconds on 2026-10-26.
  • Listings change: a job can close after it is collected. Check applicationUrl before you republish or apply.
  • If a detail record cannot be read, the job is still returned with its listing-card fields and a warning in SUMMARY.

FAQ

Can I get Jobspresso jobs through an API?

Yes. Call this Actor with apify-client (JavaScript or Python), the Apify REST API, or MCP, and read the JSON dataset. You do not need to parse Jobspresso pages yourself.

How many jobs can I get in one run?

Up to 200. Jobspresso serves 20 jobs per result page, so raise maxPages and maxResults together for bigger pulls.

Does it include salaries?

Only when the listing states one, in the salary field. Most Jobspresso listings do not publish pay.

How fresh is the data?

Every run reads the current listings, and postedAt shows when each job was posted. Schedule the Actor daily or hourly to catch new roles.

Are the jobs verified?

The Actor returns what Jobspresso publishes and does not vet employers. Each record carries the employer's website and application URL, so you can check the company before applying or reposting.

Do I need a Jobspresso account, API key, or proxy?

No. The Actor reads public listings and handles data access itself.

Can an AI agent run it by itself?

Yes. Through Apify's MCP server an agent reads the input schema and the price per job, runs the Actor, and receives the dataset. Keep maxResults modest for autonomous runs.

Compliance note

The Actor collects public job listings only. It does not log in or bypass access controls. Respect Jobspresso's terms, keep links to the original listings when you republish, and follow the privacy and employment rules that apply to your use.

Last verified: 2026-10-26