US & Canada Jobs API avatar

US & Canada Jobs API

Pricing

$0.50 / 1,000 live jobs

Go to Apify Store
US & Canada Jobs API

US & Canada Jobs API

Search US and Canadian jobs by keyword, location, remote work and salary. Get full descriptions, source details and original employer links. Try three saved sample records free of job charges. Live jobs will be billed through Apify. No separate API account.

Pricing

$0.50 / 1,000 live jobs

Rating

0.0

(0)

Developer

The Jobs API

The Jobs API

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

10 hours ago

Last modified

Categories

Share

Find jobs for your website, spreadsheet, or app. Search job listings from employer career sites in the United States and Canada.

Try the free sample

Choose Preview sample data, then click Start. You get three saved Canadian job records with full descriptions and nested source fields.

Samples were captured on October 15, 2026. Each row is marked _sample: true. They are examples, not current vacancy checks. Preview ignores country and search filters. No paid job events are charged for preview.

Search live jobs

Choose Search live jobs, select a country, add your filters, and set a result limit. Live results are billed through Apify. You do not need a separate API account or API key.

US$0.50 per 1,000 live jobs or saved catch-up updates. Platform usage is included. No startup fee and no separate charge for descriptions or source details. Check the Pricing tab for the current price before each run.

Catch up after a missed import

Keep your job board in sync even if your import was offline. Choose Catch up on job updates (paid). No separate Jobs API key is needed.

  1. Open Input > JSON and paste this small first run:
{"mode":"changes","country":"US","resumeToken":"US:0","maxItems":10,"maxRequests":30}
  1. Start the run. Open Updates to see what to add, update or remove. Export All fields > JSON for the full records.
  2. Apply the rows in order. For upsert, save or replace the job using job_id. For remove, remove that job from your active listings. An unavailable job is marked not_available, not falsely labelled closed.
  3. Open Run summary and resume cursor. Copy its resumeInput into your next run only after you have applied all saved rows.
  4. Repeat until caughtUp is true. Save that token for your next daily import. Use a separate token for Canada (CA:0 to begin).

The first run starts at the beginning of retained change history. It may take many runs to catch up. A token remembers your place, not a date. Existing search cursors do not work here. The Actor does not update a saved task's input automatically: your integration must pass the last successfully applied token into the next run. Scheduling an unchanged task repeats the same rows and charges again.

How updates work

Each row includes event_id, job_id, operation, the original event type and time, and the job's current data. A job that closed and later reopened is returned as an upsert when it is currently active. This is a current-state sync feed, not a historical snapshot service.

The feed uses retained change records, not a one-day window. Retention is not guaranteed forever, and jobs without a retained change are not a complete initial catalogue. Use live search for your initial import, then catch up. A missing row from a limited search is never proof that a job closed.

Catch-up mode takes a country and token, without search filters. Apply your own niche filters to each upsert. If a job no longer matches, remove it from your niche board. Process remove rows even if they have no job details.

Delivery is at least once. A failed write or retried run may repeat rows and charges. Deduplicate by event_id, process runs for each country in order, and save your token together with the imported data. Do not run two imports for the same country at once. Always inspect partial output after a failed run before resuming.

Ten updates cost US$0.005 at the current rate. Each update checks the job's current details, so allow roughly one request per update plus one per page. The example uses 30 requests for 10 updates to leave room for retries. A run stops safely at your item, request or cost limit; use its saved token to continue.

What can I build?

  • A niche job board: find roles for a city, industry, or skill.
  • A remote jobs newsletter: link readers to the original employer posting.
  • A hiring dashboard: follow roles and employers over time.
  • A daily workflow: send new listings to a spreadsheet or automation.

What is included?

Each row preserves the full API job object: title, employer, locations, source, job URL, application link when supplied, text and HTML descriptions, and available source-specific details. Salary and employment type depend on the source. Missing information stays missing. Any derived data stays separate from source-provided facts.

Use All fields and export JSON to retain nested details. Apify also supports CSV, Excel and XML exports. Selected table views may export only their selected columns.

The run summary includes the saved job count, request count, stop reason and resume cursor. A short or empty page can still have more matches later. The Actor continues until it reaches the end, your result limit, your request limit, or the available job budget.

Ready-to-use searches

US software jobs with salary

{
"mode": "live",
"country": "US",
"title": "software engineer",
"has_salary": true,
"maxItems": 100,
"maxRequests": 10
}

Remote jobs discovered in the last day

{
"mode": "live",
"country": "US",
"remote": true,
"window": "24h",
"maxItems": 100,
"maxRequests": 10
}

Remote jobs can still require an applicant to live in a specific place. Check the original eligibility details.

Canadian healthcare jobs

{
"mode": "live",
"country": "CA",
"region": "ON,BC",
"title": "nurse OR physician",
"maxItems": 100,
"maxRequests": 10
}

Jobs from Greenhouse, Lever and Ashby

Set source to greenhouse,lever,ashby. Add the country and any title or location filters you need. This searches the catalogue; it does not start a new scrape of an employer site.

Search tips

InputWhat it does
CountryUnited States (US) or Canada (CA). Run once per country.
KeywordsSearches title, employer and description. Words combine with AND. Use OR, quoted phrases and exclusions to narrow a search.
TitleSearches only job titles.
RegionTwo-letter codes: CA,NY for US states or ON,BC for Canadian provinces.
CityA city such as Austin or Toronto.
Remote onlyKeeps jobs marked remote by the API.
Salary onlyKeeps jobs with a structured salary amount.
First discovered withinLast hour, day, week, month or six months. This is discovery time, not employer posting time.
Resume cursorContinues a previous search using the same country and filters.

Filters combine. If a narrow search returns no jobs but has a resume cursor, increase the request limit carefully or continue with that cursor.

Limits and billing

The defaults are 100 jobs and 10 upstream requests. You may request up to 5,000 jobs or 100 requests per run. Your Apify maximum-cost setting can reduce the result limit further.

The only paid event is Live job, charged once per live job or catch-up update saved. At US$0.50 per 1,000, 100 jobs cost $0.05 and 5,000 jobs cost $2.50. There is no separate startup, search, description, or enrichment event. Check the Pricing tab for the current event price before running live data. An empty successful search has no job-result charge. Preview does not trigger paid job events.

Repeating a search can charge again for the same jobs. A run can stop at your limits before exhausting every match. It is not necessarily a complete feed.

Daily imports and automation

Save your live search as an Apify task and add a schedule. For new listings, begin with window: "24h", leave the cursor empty, and run daily. Store the job ID to deduplicate results across runs. The Actor deduplicates repeated IDs within each run.

A discovery window is not an expiration feed. Do not delete jobs simply because they are absent from a limited search. Coverage, refresh timing, and available fields vary by source.

Use Apify datasets with your own code, Make, n8n, or other supported workflows. Their costs and setup are separate. No employer-site account or applicant login is needed, and the Actor does not submit applications.

Troubleshooting

  • Live data unavailable: open an Actor issue with your run ID; the publisher may need to restore its data allowance.
  • No results: broaden the filters and inspect the resume cursor.
  • Budget too small: set a maximum cost that covers at least one live job.
  • Rate limit or temporary failure: wait, then resume using the saved cursor.
  • Run stopped during a write: inspect saved rows and deduplicate by job ID before resuming.

For help or a missing employer, open an Actor issue with your filters and run ID. Do not include credentials or personal applicant information.