DailyRemote APIdailyremote.com ↗
Search and retrieve remote job listings from DailyRemote.com. Get job titles, salaries, company info, descriptions, and application details via 2 endpoints.
What is the DailyRemote API?
The DailyRemote API gives developers access to remote job listings through 2 endpoints, returning fields like job title, salary, employment type, company logo, and full HTML job descriptions. The search_jobs endpoint accepts keyword and country filters with pagination, while get_job_detail returns a complete structured record for any individual listing including ISO-formatted posting and expiry dates.
curl -X GET 'https://api.parse.bot/scraper/2237614a-bf6d-4fc5-b495-3995fd490481/search_jobs?page=1&query=web+developer&country=Canada&fetch_details=true' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace dailyremote-com-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""DailyRemote: search remote jobs, drill into details, handle errors."""
from parse_apis.dailyremote_job_listings_api import DailyRemote, FetchDetails, JobNotFound
client = DailyRemote()
# Search for web developer jobs in Canada (fast mode, no full details)
for job in client.jobs.search(query="web developer", country="Canada", fetch_details=FetchDetails.FALSE, limit=5):
print(job.title, job.company, job.salary)
# Drill into the first result's full detail
job = client.jobs.search(query="data analyst", fetch_details=FetchDetails.FALSE, limit=1).first()
if job:
detail = job.detail.get()
print(detail.title, detail.company, detail.employment_type)
if detail.salary_structured:
print(detail.salary_structured.currency, detail.salary_structured.min, detail.salary_structured.max)
if detail.location_requirements:
print("Locations:", detail.location_requirements)
# Handle a not-found job gracefully
try:
bad_job = client.jobs.search(query="nonexistent-xyz-99999", limit=1).first()
if bad_job:
bad_job.detail.get()
except JobNotFound as exc:
print(f"Job not found: {exc.slug}")
print("exercised: jobs.search / detail.get / JobNotFound error handling")Search for remote job listings on DailyRemote with optional keyword and country filters. Returns job cards with basic metadata including title, company, salary, location, and experience level. Optionally fetches full JSON-LD details for each listing (slower). Paginates via integer page number.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number for pagination. |
| query | string | Search keyword (e.g. 'web developer', 'data analyst'). Empty string returns all listings. |
| country | string | Country filter for job location (e.g. 'Canada', 'United States'). Empty string returns all countries. |
| fetch_details | string | Whether to fetch full job details for each listing. Accepted values: 'true', 'false'. Set to 'false' for faster results with basic metadata only. |
{
"type": "object",
"fields": {
"jobs": "array of job objects with id, title, url, slug, job_type, location, salary, experience, category, and summary fields",
"page": "integer - current page number",
"has_next_page": "boolean - whether more pages exist",
"total_on_page": "integer - number of jobs returned on this page"
}
}About the DailyRemote API
What the API Returns
The search_jobs endpoint accepts three optional filters — query (keyword like data analyst), country (e.g. Canada, United States), and page for pagination. Each result in the jobs array includes the listing's id, title, url, slug, job_type, location, salary, experience, category, and a short summary. The response also exposes has_next_page and total_on_page so you can walk through paginated result sets programmatically.
Full Job Details
get_job_detail takes a slug value from a search_jobs result and returns the complete listing record. Fields include company, identifier, date_posted, valid_through, employment_type (e.g. FULL_TIME, CONTRACTOR), company_logo URL, description_html, and description_text. This endpoint is the right choice when you need the full job description rather than the card-level summary.
Filtering and Performance Notes
Setting fetch_details to true in search_jobs causes the endpoint to resolve full JSON-LD data for every listing on the page, which increases response time noticeably. For bulk scanning or building job indexes, set fetch_details to false and then call get_job_detail selectively for listings that match your criteria. The country parameter filters by job location country, not the applicant's location, so results reflect where the employer expects the role to be based.
The DailyRemote API is a managed, monitored endpoint for dailyremote.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when dailyremote.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official dailyremote.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Build a remote job board filtered by country using the
countryparam andemployment_typefield - Track salary ranges for specific roles by querying
search_jobswith a keyword and collectingsalaryfields over time - Aggregate remote job postings by
categoryto analyze which sectors are hiring remotely - Monitor when new listings appear for a target company by checking
date_postedfromget_job_detail - Build a job alert system using
has_next_pagepagination to detect new listings since last check - Populate an internal ATS or spreadsheet with structured job data including
description_textandcompany_logo
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does DailyRemote have an official developer API?+
What does `get_job_detail` return beyond what `search_jobs` already provides?+
get_job_detail returns fields not available in the search results: description_html, description_text, company_logo, valid_through, date_posted, identifier, and the canonical url. The search_jobs endpoint only includes card-level fields like summary, salary, and experience.Does the API expose company contact information or direct application URLs?+
get_job_detail endpoint returns the canonical job listing URL, which typically links to the application page. Direct recruiter email addresses or external ATS application URLs are not currently included as discrete fields. You can fork this API on Parse and revise it to extract and surface those fields from the description content.Can I filter jobs by experience level or job category?+
search_jobs returns experience and category fields per listing, but neither is available as a filter parameter — only query and country are accepted as inputs. You can fork this API on Parse and revise it to add server-side filtering on those fields.How fresh are the job listings returned by this API?+
date_posted and valid_through fields in get_job_detail show the posting and expiry timestamps so you can filter out stale listings in your application. DailyRemote does not guarantee how quickly employers remove filled positions.