Workday Jobs API — Every Posting on a Workday Career Site
Pricing
from $0.60 / 1,000 job postings
Workday Jobs API — Every Posting on a Workday Career Site
Every open posting on any Workday career site (*.myworkdayjobs.com) as clean rows: title, requisition id, locations, posted date, time and remote type, country and the full description. Workday's own facets and search, any number of sites. No key, no login, no browser.
Pricing
from $0.60 / 1,000 job postings
Rating
0.0
(0)
Developer
Insight Solutions
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
9 days ago
Last modified
Categories
Share
Paste any Workday career-site address — anything on *.myworkdayjobs.com,
such as https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite, a link
to one posting, or just boeing.wd1.myworkdayjobs.com/EXTERNAL_CAREERS — and get
one clean row per open posting: title, requisition id, locations, posted
date, time type, remote type, country and the full description as text,
Markdown or HTML. Filter with Workday's own facets (job category, country,
location, time type…) and search box, or with title, location, remote and
posted-within-days filters of your own. Any number of sites in one run.
It reads exactly what the career site itself loads in a visitor's browser: Workday's public career-site JSON. No API key, no login, no cookie, no browser. A tenant that only shows its jobs to signed-in users is reported, not worked around.
At a glance
Input — this is the Store prefill; paste it and run:
{ "sites": ["https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite"], "searchText": "", "facets": {},"listFacets": false, "includeDescription": true, "descriptionFormat": "text", "titleFilter": [],"titleExclude": [], "locationFilter": [], "remoteOnly": false, "maxJobsPerSite": 20, "maxJobsTotal": 1000,"maxDetailFetches": 1000, "maxConcurrency": 3, "maxRunSecs": 240, "proxyConfiguration": { "useApifyProxy": true } }
NVIDIA's 20 newest postings with their descriptions — 1 list page and 20 detail documents, about 21 requests.
Output — one job-posting row per posting; the fields you will use most are
title, jobId, locations, countryCode, postedAt, timeType,
isRemote, descriptionText and url. Then one free site row per site with
the total Workday reports. Anything that could not be read — a site id that
does not exist, a tenant that refuses anonymous visitors, a facet the site does
not have — comes back as a free diagnostic row (ok: false, errorType,
error) instead of a charge.
Price — $1 per 1,000 postings (+ $0.001 per run) on the FREE tier, with
or without descriptions; site rows, facet rows, diagnostics, filtered-out
postings and empty runs free; limited permissions, works over the Apify MCP
server (mcp.apify.com) and with x402 agentic payments.
From code —
client.actor("insight.solutions/workday-jobs-api").call(run_input={…}) with
apify-client, or
POST https://api.apify.com/v2/acts/insight.solutions~workday-jobs-api/run-sync-get-dataset-itemsNeed other ATS platforms too — Greenhouse, Lever, Ashby and the rest? See Career Site Jobs API (insight.solutions/ats-jobs-api), which reads 13 of them, Workday included, in one schema. This Actor does one platform, all the way down: every facet, any number of sites, and descriptions for every posting.
What you get
A job posting as the list page gives it (the prefill's first row, with
includeDescription: false; empty columns left out):
{"ok": true,"rowType": "job-posting","input": "https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite","scrapedAt": "2026-10-05T12:00:00.000Z","source": "nvidia.wd5.myworkdayjobs.com","sourceUrl": "https://nvidia.wd5.myworkdayjobs.com/wday/cxs/nvidia/NVIDIAExternalCareerSite/jobs","jobId": "JR2026139","title": "Senior Technical Program Manager","url": "https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite/job/US-CA-Santa-Clara/Senior-Technical-Program-Manager_JR2026139","company": "Nvidia","siteName": "NVIDIAExternalCareerSite","locationsText": "US, CA, Santa Clara","locations": ["US, CA, Santa Clara"],"city": "Santa Clara","region": "CA","countryCode": "US","postedOn": "Posted Today","postedAt": "2026-10-05","postedAtPrecision": "derived","rank": 1}
With includeDescription on (the default), each posting's detail document adds
— shown here for an NVIDIA posting in the test fixtures:
{"applyUrl": "https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite/job/US-CA-Santa-Clara/Senior-Deep-Learning-Performance-Engineer_JR1998001/apply","locations": ["US, CA, Santa Clara", "US, TX, Austin"],"remoteType": "Hybrid Remote","isRemote": false,"timeType": "Full time","postedAt": "2026-09-01","postedAtPrecision": "exact","descriptionText": "Optimise deep learning kernels across the NVIDIA stack.\n\n- CUDA\n- Profiling","sourceUrl": "https://nvidia.wd5.myworkdayjobs.com/wday/cxs/nvidia/NVIDIAExternalCareerSite/job/US-CA-Santa-Clara/Senior-Deep-Learning-Performance-Engineer_JR1998001"}
A site row (free, one per site read):
{"ok": true,"rowType": "site","company": "Nvidia","siteName": "NVIDIAExternalCareerSite","url": "https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite","totalPostings": 2000,"returned": 20,"filteredOut": 0,"facetNames": ["jobFamilyGroup", "workerSubType", "timeType", "locationHierarchy2", "locationHierarchy1", "locations"]}
A facet row (free, with listFacets: true) — one per value, so you can
filter by it:
{ "ok": true, "rowType": "facet", "company": "Boeing", "siteName": "EXTERNAL_CAREERS","facetParameter": "jobFamilyGroup", "facetLabel": "Job Category","valueLabel": "Software Engineering (6J)", "valueId": "8b618a30e00f01c7277572e8143f8b25", "count": 94 }
Every row carries every column — null where it does not apply — so the dataset exports as one table.
Quick start
- Open the career site you want in a browser and copy the address bar — any page of it.
- Paste it into Workday career sites. Add as many as you like.
- Run. Each posting arrives as a row; each site adds one free
siterow with the total Workday reports.
To filter with Workday's own categories, run once with List facets on and
Max postings per site at 1. The free facet rows list every category,
country and location the site offers, with its id and count. Put the names you
want into Facets and run again.
Any Workday address works
| You paste | It reads |
|---|---|
https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite | the site |
https://nvidia.wd5.myworkdayjobs.com/en-US/NVIDIAExternalCareerSite | the same site (the locale is skipped) |
https://nvidia.wd5.myworkdayjobs.com/en-US/NVIDIAExternalCareerSite/job/US-CA-Santa-Clara/Senior-Technical-Program-Manager_JR2026139 | the whole site that posting is on |
nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite | the same site |
workday:nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite | the same site (Career Site Jobs API's spelling) |
https://nvidia.wd5.myworkdayjobs.com/wday/cxs/nvidia/NVIDIAExternalCareerSite/jobs | the same site (the API address itself) |
The same site given twice is read once. A query string (?q=…) is ignored —
search and filters come from the inputs, so a run means the same thing for every
site in it. Anything that is not a Workday career site — another ATS, a company
homepage, a host with no site id — comes back as a free invalid-input row and
the other sites still run.
Input
| Field | Default | What it does |
|---|---|---|
sites | prefill: NVIDIA | Workday career-site addresses (see above). |
searchText | "" | Passed to the site's own search box, e.g. engineer. |
facets | {} | Workday's own filters: { "jobFamilyGroup": ["Engineering"], "locationCountry": ["Germany"] }. A facet is named by its facetParameter or its label; a value by its id or name, ignoring case. |
listFacets | false | Also return a free facet row per facet value of each site. |
includeDescription | true | Fetch each posting's detail document: description, every location, time and remote type, country, exact date. |
descriptionFormat | text | text → descriptionText, markdown → descriptionMarkdown, html → descriptionHtml (sanitized). The other two stay null. |
titleFilter / titleExclude | [] | Keep / drop postings whose title contains any of these (case-insensitive). |
locationFilter | [] | Keep postings with a location containing any of these, across every location the posting lists. |
postedWithinDays | empty | Keep postings posted at most this many days ago. |
remoteOnly | false | Keep remote postings only. |
maxJobsPerSite | 200 (prefill 20) | Posting rows per site, 1–10,000; list pages stop once it is reached. |
maxJobsTotal | 1000 | Posting rows per run, across every site. |
maxDetailFetches | 1000 | Detail documents per run. Beyond it postings still come back, with descriptionText: null and descriptionTruncatedReason: "maxDetailFetches". |
maxConcurrency | 3 | Sites read at once (different employers only — see Speed). |
maxRunSecs | 240 | The run's time budget, 30–3,600 s. |
proxyConfiguration | { "useApifyProxy": true } | Apify datacenter proxy. |
A run with no usable site, unreadable facets, or a postedWithinDays that is
not a whole number finishes FAILED before a single request — and costs nothing.
Facets: Workday's own filters
Every Workday site has its own facets, and their ids differ per employer — NVIDIA's "Engineering" is not Adobe's. So the Actor reads each site's first page, looks your names up there, and applies the matching ids:
| Site | Facets it offered in the capture |
|---|---|
| NVIDIA | jobFamilyGroup (Job Category, 14), workerSubType, timeType, locationHierarchy2 (Office / Remote), locationHierarchy1 (36 countries), locations (130 sites) |
| Adobe | jobFamilyGroup (12), workerSubType, timeType, locationCountry (19), locations (69) |
| Boeing | remoteType (Onsite Job / Hybrid Job), jobFamilyGroup (48), workerSubType, timeType, locationCountry, locations (173), distance |
| Salesforce | a custom CF_-_REC_-_…Country… facet (38 countries), jobFamilyGroup (18), workerSubType, timeType, locations (172) |
{ "sites": ["https://boeing.wd1.myworkdayjobs.com/EXTERNAL_CAREERS"],"facets": { "Job Category": ["Software Engineering (6J)"], "remoteType": ["Hybrid Job"] } }
Several values of one facet mean any of them; several facets mean all of
them, as on the career site. A value a site does not list comes back as a free
facet-not-found row naming the first 20 values it does list; the facet's other
values still apply. A facet with no matching value — or a facet the site
does not have at all — skips that site with the same free row, rather than
reading it unfiltered and charging for postings you did not ask for.
jobFamilyGroup, timeType and remoteType are also filled from the facets
when that is certain: the run filtered on exactly one value, or the site lists
only one value and every posting carries it (Boeing: "Full time", 770 of 770).
Output reference
| Column | Rows | Meaning |
|---|---|---|
ok, rowType, input, error, errorType, scrapedAt, source, sourceUrl | all | The envelope. rowType is job-posting, site, facet or diagnostic; input is the sites entry as you gave it; sourceUrl is the Workday API address the row came from. |
jobId | posting | The requisition id Workday shows on the list (JR2026139), else the detail's jobReqId. |
title, url, applyUrl | posting | applyUrl is url + /apply when the detail was read and lists the posting as open. |
company, siteName | posting, site, facet | The tenant title-cased (Nvidia) and the site id. |
locationsText | posting | The list's own wording — a place, or a count like 2 Locations. |
locations | posting | Every place named, in Workday's wording. A count is never an entry; the detail document supplies the names. |
city, region, countryCode | posting | Best-effort, from the primary location; the country from the detail when read (ISO alpha-2). |
remoteType, isRemote | posting | Workday's label as the employer words it, and true / false / null. Hybrid is not remote. |
timeType, jobFamilyGroup | posting | See Facets for when jobFamilyGroup is known. |
postedOn, postedAt, postedAtPrecision | posting | See Posted dates. |
descriptionText, descriptionMarkdown, descriptionHtml | posting | One of them, per descriptionFormat. |
descriptionTruncatedReason | posting | Why a requested description is missing: maxDetailFetches, detail-unavailable or deadline. Null otherwise. |
rank | posting | 1-based position on the site, in Workday's order. |
totalPostings, returned, filteredOut, facetNames | site | The total Workday reported for your search and facets, what this run returned and filtered out, and every facet the site offers. |
facetParameter, facetLabel, valueId, valueLabel, count | facet | One facet value. |
Diagnostic errorTypes: invalid-input, board-not-found (HTTP 404, Workday's
S21 "not found"), board-unavailable (HTTP 422 from a tenant that does not
answer anonymous visitors, a refusal from two exit IPs, or a 5xx that failed
again on its retry), facet-not-found, timeout, deadline and http.
Posted dates
Workday's list says when a posting went up in words — "Posted Today", "Posted 5
Days Ago", "Posted 30+ Days Ago" — and the detail document says it exactly
(startDate, 2026-09-01).
- With the detail read,
postedAtis that date andpostedAtPrecisionisexact. - Without it,
postedAtis counted back from the run's own date (scrapedAt) and isderived: "Today" is the run's date, "Yesterday" one day back, "5 Days Ago" five. "30+ Days Ago" is 31 days back — a lower bound.
postedWithinDays uses the same numbers ("30+" = 31): a "30+" posting is too old
for any window under 31 days, and for a wider one the detail's exact date
decides. Without search text Workday lists a site's postings newest first (every
capture agrees), so a walk with postedWithinDays stops at the first page that
is entirely older.
What you are never charged for
- Every
siteandfacetrow. - Every
diagnosticrow: a site id that does not exist, a tenant that refuses anonymous visitors, a facet the site does not have, a timeout, the deadline. - Postings dropped by your filters — filters run before the charge, and most run before the detail document is even fetched.
- A run that returns nothing at all: it finishes SUCCEEDED with zero results and a "0 results. N diagnostic row(s) explain why. Nothing was charged." status message, and bills nothing, start fee included.
Pricing
| Event | What it is | FREE | BRONZE | SILVER | GOLD |
|---|---|---|---|---|---|
actor-start | Once per run, only after the run has returned a posting | $0.001 | $0.001 | $0.001 | $0.001 |
job-posting | One posting row, with or without its description | $0.001 | $0.001 | $0.0008 | $0.0006 |
$1 per 1,000 postings (+ $0.001 per run).
| Run | Cost |
|---|---|
| The prefill — NVIDIA's 20 newest postings with descriptions | $0.021 |
| 1,000 postings with descriptions: 1,000 × 0.001 + 0.001 | $1.001 |
| The same at GOLD | $0.601 |
| A daily monitor of 5 sites finding ~40 new postings | $0.041 a day |
| A site that does not exist, a tenant that refuses anonymous visitors | $0.00 |
Charging is charge-after-push: rows are in your dataset before the event is
recorded. ACTOR_MAX_TOTAL_CHARGE_USD is respected — room for each posting is
checked before its detail document is fetched, with the start fee kept in
reserve — and when it is reached the run stops fetching, says so in its status
message, and finishes SUCCEEDED.
Speed, proxy and politeness
Requests to one Workday host go one at a time, 250–600 ms apart, list pages and detail documents alike; a 403 or 429 is retried once from a fresh proxy session, and a second refusal becomes a free row. So:
- With descriptions on, one site runs at roughly one posting per 1.2–1.5 s —
about 200 postings in the default 240-second budget. For a big site raise
maxRunSecs, or switchincludeDescriptionoff: the list alone is 20 postings per request. - Several different employers run in parallel (
maxConcurrency, default 3); two sites on one host share its queue. - The default proxy is Apify's datacenter pool: NVIDIA, Adobe, Boeing and Salesforce all answered through it in the capture.
Use it from an AI agent, or from code
One JSON object in, one flat array out — the shape agent runtimes want. The Actor runs with limited permissions, uses pay-per-event pricing and never enters Standby, so it works over the Apify MCP server and with x402 agentic payments. The Integrations tab pushes results to Slack, a webhook, Zapier, Make, Google Sheets, Snowflake or BigQuery.
curl -X POST "https://api.apify.com/v2/acts/insight.solutions~workday-jobs-api/run-sync-get-dataset-items?token=$APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"sites":["https://adobe.wd5.myworkdayjobs.com/external_experienced"],"searchText":"engineer","postedWithinDays":7,"maxJobsPerSite":100}'
# pip install apify-clientfrom apify_client import ApifyClientclient = ApifyClient("<APIFY_TOKEN>")run = client.actor("insight.solutions/workday-jobs-api").call(run_input={"sites": ["https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite","https://boeing.wd1.myworkdayjobs.com/EXTERNAL_CAREERS",],"facets": {"Job Category": ["Software Engineering (6J)", "Engineering"]},"maxJobsPerSite": 300,"maxRunSecs": 900,})for row in client.dataset(run["defaultDatasetId"]).iterate_items():if row["rowType"] == "job-posting":print(row["company"], row["jobId"], row["title"], row["countryCode"], row["postedAt"], sep=" | ")
(That run applies NVIDIA's "Engineering" and Boeing's "Software Engineering
(6J)": each site applies the names it has, and a free facet-not-found row notes
the one it lacks.)
FAQ
How many postings does a site have? The site row's totalPostings is what
Workday reports on the first page for your search and facets. Workday appears to
cap it: NVIDIA reported 2,000 while its Time Type facet counts add up to
2,700. To reach everything on a very large site, split the run by a facet — one
country or job category at a time.
Why do some postings have no description? Either the run's
maxDetailFetches was reached, the detail document could not be read (the
posting was withdrawn, or Workday refused it), or the time budget ran out —
descriptionTruncatedReason says which. The row is still there, and still has
everything the list carries.
Why is locations empty and locationsText "3 Locations"? Workday's list
gives a count for a posting in several places; the names are only in the detail
document. Turn includeDescription on.
Why is jobFamilyGroup null? Workday's list does not say which category a
posting is in; the Actor fills it only when the facets make it certain (see
Facets). Filter on one category and every row carries it.
Does it sign in, or read internal postings? No. It reads what an anonymous
visitor sees, never sends a cookie and never asks for credentials. A tenant that
does not serve its jobs anonymously — Walmart's answered HTTP 422 in the capture
— comes back as a free board-unavailable row.
Does it remove personal data? A posting is the employer's own publication,
but recruiters sometimes sign one with a name and a mailbox. E-mail addresses,
mailto: links, recruiter sign-off lines and LinkedIn profile links are removed
from every description format before the row is written.
Can I monitor a site for new postings? Schedule a run with
postedWithinDays: 1 (or 7) and no search text: the walk stops at the first page
that is entirely older, so a daily check of a large site is a few requests.
Limitations
- Workday's career-site API is undocumented and may change. Every captured
tenant answered the same shape, but Workday can change it at any time; a shape
the Actor does not recognise comes back as a free
httprow saying so. - 20 postings per list request — Workday's own limit 20 (asking for 50 is an HTTP 400) — and descriptions cost one more request each, one at a time per host. Large sites take time; see Speed.
- Anonymous access only. Some tenants require a signed-in visitor for their
job list and answer HTTP 422; you get a free
board-unavailablerow. totalPostingsappears to be capped by Workday (2,000 on NVIDIA); split very large sites by facet.- Only
*.myworkdayjobs.comcareer sites are read; the less commonmyworkdaysite.comform is not. city,regionandcountryCodeare parsed from Workday's location wording, which each employer chooses; they are a careful guess that never invents a country, andlocationsalways keeps the original text.companyis the tenant name title-cased ("Nvidia"), not the legal name.- The posting date is exact only when the detail document was read; otherwise it is derived from "Posted N Days Ago", and "30+" is a lower bound.
Not affiliated with Workday, Inc., or with any employer whose postings you retrieve. Workday is a trademark of its owner, used only to describe which public career sites this Actor reads.
Our other Actors
Every Insight Solutions Actor is pay-per-result with no browser, no login and no API key, and every one of them returns free diagnostic rows instead of billing for failures. Prices are per 1,000 results.
Video, audio & social
- YouTube Transcript API — captions as timed segments, text, SRT or VTT, with language fallback and translation.
- YouTube Comments API — comments and replies with likes, pinned and hearted flags, newest or top sort.
- YouTube Channel API — a channel's videos, Shorts and live streams, plus YouTube search.
- Podcast Search, Episodes & Charts API — Apple Podcasts search, charts and full episode feeds.
- Bluesky Scraper — profiles, posts, followers and follows from the public AT Protocol API.
- Telegram Channel Scraper — posts, views and channel stats from public Telegram channels.
- Substack Scraper — posts with full free text, comments and publication profiles.
- Hacker News API — stories, comments, users, front page and a structured "Who is hiring?" parser from the official HN APIs.
- GitHub Repos, Trending & Releases API — repository facts, trending lists, releases and search, no token needed for small runs.
- Discourse Forum API — topics, posts and categories from any Discourse community via its own JSON endpoints, usernames only.
News, documents & the web
- Google News Search, Topics & Real Article URLs — news search and topic feeds with the publisher's real URL decoded.
- Website to Markdown — Content Extractor for LLMs & RAG — any site as clean Markdown, text and heading-aware chunks.
- WordPress Posts & Pages API — posts and pages from any WordPress site as clean text or Markdown, with categories, tags and images.
- Website Metadata API — any URL's meta tags, Open Graph, Twitter cards, hreflang, feeds, JSON-LD and microdata, with normalised Product, Article, Event and FAQ entities.
- Subdomain Finder API — every subdomain of a domain from certificate-transparency logs, resolved over DNS, with an optional live HTTP check.
- Internet Archive API — archive.org search, item metadata, files and reviews.
- Wayback Machine Toolkit — archived URL inventories, snapshots and text diffs between dates.
- Website Technology Detector — the tech stack behind any site, with the evidence for each detection.
- Domain Intelligence API — DNS, RDAP registration, TLS certificate and HTTP facts in one row per domain.
- SEO Page Audit — sitemap crawl with on-page checks, structured data and broken-link reports.
- Keyword Suggestions API — Google, YouTube, Bing, Amazon and eBay autocomplete with alphabet and question expansions.
- Website Contact Extractor — emails, phone numbers and social profiles from any list of websites.
- Web Search Results API — Bing and DuckDuckGo organic results with snippets, no key, no browser.
- Company Enrichment API — a domain in, a company profile out: firmographics, contacts, tech stack, DNS and hiring signal.
- Company Dossier API — one company in, twelve sections out: profile, tech, contacts, DNS, open roles, news, SEC filings, federal awards, recalls, YC batch and apps.
- Press Releases API — GlobeNewswire and PR Newswire releases plus any newsroom feed, by keyword, company, ticker or subject.
- Federal Register API — rules, proposed rules, notices and the Public Inspection desk with dockets, comment deadlines and CFR references.
- Academic Papers Search API — OpenAlex, Crossref, arXiv and PubMed in one row per paper: abstract, citations, open-access PDF, authors and venue.
- RSS & Atom Feed Monitor — any RSS, Atom or JSON feed (or an OPML file) in, only the new items out, with keyword filters and a webhook.
- Website Change Monitor — watch any pages, diff the text between runs, get change rows with added/removed lines, keyword alerts and a webhook.
- Wikipedia & Wikidata API — article text, search, daily pageviews and Wikidata entity facts, any language edition.
Business, finance & jobs
- Congress & Insider Trades API — STOCK Act periodic transaction reports and SEC Form 4 insider trades in one schema.
- Federal Contracts, Grants & Lobbying API — SAM.gov opportunities, USAspending awards, Grants.gov notices and Senate lobbying filings in one schema.
- SEC EDGAR API — filings, XBRL financials and full-text search by ticker or CIK.
- Clinical Trials & FDA API — ClinicalTrials.gov studies plus openFDA recalls, labels, approvals, 510(k)s and adverse-event reports.
- Product & Vehicle Recalls API — CPSC, NHTSA, FDA and USDA recalls, vehicle complaints and ratings, plus a VIN decoder.
- Y Combinator Companies, Batches & Founders — the YC directory with founders and social links, filterable by batch, industry and hiring status.
- Career Site Jobs API — jobs straight from Greenhouse, Lever, Ashby, Workable and 10+ other ATS career sites.
- New Job Postings Monitor — new, closed and changed postings on the career sites you watch.
- Hiring Signals API — Open Roles & Hiring Surge by Company — one row per company per run: open roles, what opened and closed, department and seniority breakdowns, and a hiring-surge flag.
- Remote Jobs API — RemoteOK, Remotive, We Work Remotely, Himalayas, Jobicy and more in one schema, deduplicated.
- Shopify Products API — any Shopify store's catalogue, variants, prices and stock signals.
- WooCommerce Products API — any WooCommerce store's catalogue, prices, variants and stock through its public Store API.
- Shopify App Store API — Shopify App Store listings by category, collection or developer: pricing plans, ratings and merchant reviews.
- Luma Events API — upcoming Luma events by city, category or calendar: dates, venue, price, capacity and organiser calendar, no host names.
- Shopify Store Monitor — price drops, sales, restocks, sell-outs and new products on any Shopify store, one row per change.
- Public Tenders API — EU TED, UK Find a Tender and Contracts Finder notices by keyword, CPV code, country, stage and deadline.
- Nonprofit & IRS 990 Lookup API — search US nonprofits and get EIN, NTEE code and multi-year Form 990 financials.
- OpenStreetMap Places API — businesses and points of interest by category and area from OpenStreetMap: name, address, coordinates, website, phone, opening hours.
Apps & games
- App Store & Google Play Reviews API — reviews from both stores with ratings, versions and developer replies.
- App Store Top Charts & App Search API — Apple top charts by country and genre, plus app search and details.
- App Store Keyword Rank Tracker — where any app ranks for any keyword on the App Store and Google Play, with rank changes and ASO suggestions.
- Steam Reviews API — Steam reviews with playtime, helpfulness and game details.
- Steam Game Data API — prices, tags, review scores, live player counts and top charts.
- Sports Scores & Schedules API — scores, schedules, standings, teams and headlines for the NFL, NBA, MLB, NHL, soccer and more, no key.
- App Store Monitor — App Store and Google Play listings watched between runs: new versions with release notes, price, rating and listing changes, one row per change.