Keyword Suggestions API — Google, Bing & Amazon
Pricing
from $0.12 / 1,000 keyword returneds
Keyword Suggestions API — Google, Bing & Amazon
Keyword research as data. Every autocomplete suggestion for your seed keywords from Google, YouTube, Bing, Amazon, eBay and DuckDuckGo, expanded alphabet-soup style with question, preposition and comparison modifiers. One row per keyword, with relevance and repeat counts. No API key, no login.
Pricing
from $0.12 / 1,000 keyword returneds
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
Real keyword research, from the search boxes themselves. Give this Actor a
list of seed keywords and it asks the public autocomplete endpoints of Google,
YouTube, Bing, Amazon, eBay and DuckDuckGo what they would suggest — then
expands each seed alphabet-soup style (best crm a … best crm z), with
question, preposition and comparison modifiers (how best crm,
best crm withoutbest crm vs), and returns every suggestion as a row.
These are the phrases real people are typing right now, ranked by the engines themselves. No API key. No login. No Search Console, no Keyword Planner account. $0.20 per 1,000 keywords, proxy included, queries that return nothing are free, and a run that returns nothing costs nothing at all.
Try it in 30 seconds
{"keywords": ["best crm", "yoga mat"],"sources": ["google", "youtube", "bing"],"expansions": [],"country": "us","language": "en"}
Two seeds, three engines, six requests, about ninety keywords. Then turn the expansions on and watch it become a research project:
{"keywords": ["best crm"],"sources": ["google", "bing", "amazon"],"expansions": ["alphabet", "questions", "comparisons"]}
That is 64 queries per engine — the seed, best crm a through best crm z,
best crm how and how best crm for thirteen question words, and eleven
comparison forms — and typically several hundred unique keywords.
Price — $0.20 per 1,000 keywords on the FREE tier (+ $0.001 per run); proxy
is included, and queries that return nothing, keywords no engine suggests for,
and requests an endpoint blocked are all free diagnostic rows. Pay-per-event, no
API key, no browser, limited permissions — works over the Apify MCP server
(mcp.apify.com) and with agentic (x402) payments.
From code — client.actor("insight.solutions/keyword-suggestions-api").call(run_input={…})
with apify-client, or POST https://api.apify.com/v2/acts/insight.solutions~keyword-suggestions-api/run-sync-get-dataset-items.
What comes back
One keyword row per suggestion:
{"ok": true,"rowType": "keyword", // "keyword" | "diagnostic""input": "Best CRM", // exactly what you typed"seed": "best crm", // normalised: trimmed, lower-cased"source": "google", // google | youtube | bing | amazon | ebay | duckduckgo"suggestion": "best crm app for small business", // the keyword itself"position": 1, // 1-based rank within its query"relevance": 1251, // Google's and Bing's own score; null elsewhere"suggestType": "QUERY", // Google says QUERY, Amazon says KEYWORD"query": "best crm a", // the exact prefix that produced it"expansion": "alphabet", // seed | alphabet | numbers | questions | prepositions | comparisons"modifier": "a","modifierPosition": "suffix", // "prefix" for "how best crm""alsoFrom": 7, // 7 other queries returned this too — a strength signal"wordCount": 6, // 3+ words is the long tail"containsSeed": true,"language": "en","country": "us","marketplace": null, // "amazon.com", "ebay.co.uk" … on marketplace rows"ebayCategories": null, // eBay only: the departments it maps the query to"error": null,"errorType": null,"scrapedAt": "2026-09-11T15:04:05.487Z","sourceUrl": "https://suggestqueries.google.com/complete/search?client=chrome&q=best%20crm%20a&hl=en&gl=us"}
A marketplace row carries the two extra columns:
{"source": "ebay","seed": "yoga mat","suggestion": "yoga mat non slip","position": 2,"marketplace": "ebay.co.uk","ebayCategories": ["Fitness, Running & Yoga Equipment"],"relevance": null,"sourceUrl": "https://autosug.ebay.com/autosug?kwd=yoga%20mat&sId=3&_jgr=1&_ch=0&_callback=0"}
Every row carries the same columns, so six engines, five expansions and the diagnostics export as one rectangular table.
Use cases
- Long-tail keyword discovery. One seed plus
alphabetandquestionsis the AnswerThePublic pattern, as a dataset rather than a picture. FilterwordCount >= 4and you have the phrases with intent behind them. - Content briefs from real questions.
expansions: ["questions"]returns what people actually ask about a topic — appended and prepended, becausecrm howandhow crmare different questions. That is your H2 list. - Product and listing research. Amazon and eBay autocomplete is buying
intent, not browsing intent.
ebayCategoriesalso tells you which department eBay thinks the query belongs to, which is where your listing should sit. - PPC negative-keyword mining. Filter
containsSeed: falseand you get the places the engine took the query that you did not mean — the fastest source of negatives there is. - Tracking what the engines suggest over time.
scrapedAtplus a weekly schedule is a time series of suggestion lists. Autocomplete moves; a keyword entering or leaving the list is a signal. - Multi-engine comparison. Google, Bing and YouTube disagree about the same
seed more than you would expect, and the disagreement is the interesting part.
sourceis on every row, so it is a pivot rather than a join. - Seeding an LLM pipeline. A few hundred real phrases, ranked, with their source and their repeat counts, is a far better prompt input than a model's own guess at what people search for.
How it works, and why it keeps working
Every search box on the web is backed by a small public endpoint that answers a prefix with a list of completions. They are fast, they are tiny, and they are public — a browser calls them on every keystroke. This Actor calls six of them.
| Source | Endpoint | Shape |
|---|---|---|
suggestqueries.google.com/complete/search?client=chrome | JSON array. 15 suggestions with a relevance score and a type each | |
| YouTube | the same host with ds=yt | JSON array. 10 video-search suggestions |
| Bing | api.bing.com/osjson.aspx | JSON array. Up to ~25 — the longest lists here — with relevance scores |
| Amazon | completion.amazon.com/api/2017/suggestions | JSON object. ~10 shopping suggestions, scoped to a department |
| eBay | autosug.ebay.com/autosug | JSONP. ~10 suggestions plus the categories eBay maps the query to |
| DuckDuckGo | duckduckgo.com/ac/ | JSON array. 8 suggestions, no locale |
Four things catch naive scrapers here, and all four are handled:
The bodies are not what the headers say. Google serves
content-type: text/javascriptcontent-disposition: attachment header, and the body is
JSON. eBay serves application/json with a body that is not JSON — it is
JSONP, wrapped in /**/vjo.darwin.domain.finding.autofill.AutoFill._do(…) with a
comment prologue and a dotted callback name. Nothing here trusts a content type.
The array shape differs per client. Google's chrome client answers five elements, its firefox client four, Bing five with a different arrangement, and DuckDuckGo two. The parser finds the suggestions at index 1 and the metadata by looking for an object rather than by counting — which is also why Bing's relevance scores come through even though only Google documents them.
Expansion is the whole trick, and it is arithmetic. Each expansion term is
one more request per source. The input schema states the count for every
expansion so the cost is visible before the run, not after it, and maxRunSecs
stops a run that would not finish.
Not every engine welcomes every address. Google, Bing, YouTube, Amazon and
eBay all answer Apify's cheap datacenter proxy. DuckDuckGo does not — it
closes the connection before TLS completes. When an endpoint refuses an exit IP —
HTTP 429, HTTP 403, or a body that is not the expected JSON — that session is
retired and the same request goes out once more from a different address.
Retrying on an address that was just refused only deepens the block, so it is
never done. If the second address is refused too, that keyword and engine stop,
keep every suggestion already collected, and file one free blocked row
saying where it stopped. Google additionally has a second client (firefox) that
is tried before anything is called a block.
How it compares
- Six engines, one schema. Search intent, video intent and buying intent in
the same table, with
sourceas a column rather than three different tools. alsoFromis a real signal. With dedupe on, a suggestion that turned up under twelve different prefixes carriesalsoFrom: 12. That is the engine telling you how much it wants to suggest that phrase — free, and available nowhere else.- Failures are free and legible. A seed nobody suggests anything for, an
engine that refused the run, a source name that does not exist: each produces a
diagnostic row with an
errorTypeyou can branch on, and no charge. A run whose keywords were all usable but produced nothing — a seed no engine completes, an engine that refused us — finishes SUCCEEDED with zero results, a status message that says so, and a free diagnostic row per keyword and source telling you why; nothing is charged, start fee included. A run finishes FAILED only when there was nothing usable to attempt (no keyword, or no source this Actor knows), or the Actor itself hit an error. - A partial run is kept, not thrown away. Hit
maxRunSecsor your charge ceiling halfway through an alphabet expansion and you keep the letters already collected. - Honest about what is not here. No search volume, no CPC, no difficulty score — see Limits below, in detail, rather than as a footnote.
- No login, ever. No Google account, no Keyword Planner, no cookie jar, no session token. Public endpoints only, which is also why it runs under Apify's limited permissions.
Input reference
| Field | Type | Default | What it does |
|---|---|---|---|
keywords | array of strings | prefilled with two | Seed keywords. Compared case- and space-insensitively; up to 200 per run, each under 200 characters |
sources | array | ["google","youtube","bing"] | Which engines to ask: google, youtube, bing, amazon, ebay, duckduckgo. Each is one request per query |
expansions | array | [] | alphabet (+26 queries), numbers (+10), questions (+26, appended and prepended), prepositions (+12), comparisons (+11). All five is 86 queries per seed per source |
language | string | en | ISO 639-1. Google/YouTube hl; folded into Bing's market |
country | string | us | ISO 3166. Google/YouTube gl; upper-cased into Bing's market; mapped to eBay's site ID. Amazon ignores it |
maxSuggestionsPerQuery | integer | 20 | How many to keep per query. The engines' own ceilings are 15 (Google), ~25 (Bing), ~10 (the rest) |
dedupe | boolean | true | One row per unique suggestion per seed and source, with alsoFrom counting the other queries that returned it. Off: every query keeps its own rows |
amazonDepartment | string | aps | Amazon's search alias — aps is all departments, electronics, books, sporting… scope it |
maxConcurrency | integer | 4 | (keyword, source) pairs in parallel. Each worker keeps its own proxy session |
maxRunSecs | integer | 240 | Whole-run wall-clock budget. When it runs out the Actor keeps what it has and files a free diagnostic row for each job it never finished |
proxyConfiguration | object | Apify datacenter | Five of six engines answer datacenter addresses. DuckDuckGo needs RESIDENTIAL |
Output reference
| Column | On which rows | What it is |
|---|---|---|
ok, rowType | all | true plus keyword, or false plus diagnostic |
input, seed | all | The seed as you typed it, and its normalised form |
source | all | Which engine — rows come out grouped by engine |
suggestion | keyword | The keyword itself, verbatim |
position | keyword | 1-based rank within the query that produced it |
query, expansion, modifier, modifierPosition | keyword | The exact prefix sent, and how it was built from the seed |
relevance | keyword | The engine's own ordering score — Google and Bing publish one; not a search volume |
suggestType | keyword | QUERY from Google, KEYWORD from Amazon, null elsewhere |
alsoFrom | keyword | How many other queries returned the same suggestion. Null when dedupe is off |
wordCount, containsSeed | keyword | Long-tail filter, and whether the engine stayed on your phrase |
marketplace, ebayCategories | keyword | amazon.com / ebay.co.uk …, and the departments eBay maps the query to |
language, country | all | The locale this run asked for |
sourceUrl | keyword | The exact endpoint the row was read from, so any row can be checked by hand |
error, errorType | diagnostic | What went wrong, and a type to branch on |
scrapedAt | all | When the row was written, UTC |
errorType is one of no-results, blocked, timeout, invalid-input.
Pricing
$0.20 per 1,000 keywords. Pay-per-event, with proxy already inside that number — there is no separate proxy line on your bill for this Actor.
| Event | What triggers it | FREE | Starter | Scale | Business |
|---|---|---|---|---|---|
| Keyword returned (primary) | One keyword row written to your dataset | $0.0002 | $0.0002 | $0.00016 | $0.00012 |
| Run started | Once per run, after the first paid row | $0.001 | $0.001 | $0.001 | $0.001 |
Quick-look example. The prefill — 2 seeds, 3 engines, no expansion: about 90 keywords × $0.0002 + $0.001 = $0.019, from six requests.
Research example. One seed, alphabet + questions, three engines: 159
requests, typically 400–900 unique keywords = $0.08–$0.18 per seed.
Seed-list example. 50 keywords, no expansion, three engines: 150 requests, about 2,250 keywords = $0.451. Weekly, that is about $1.95 a month.
What you are never charged for: a query that returned no suggestions, a keyword
no engine suggests anything for, a keyword that was empty or too long, a source
name this Actor does not have, a job the run never reached before maxRunSecs,
or a request an endpoint blocked. Duplicates folded by dedupe are billed once,
not once per query that found them. If a whole run comes back empty it finishes
SUCCEEDED with zero results and a "0 results" status message, and bills
nothing at all, start fee included.
Set ACTOR_MAX_TOTAL_CHARGE_USD on a run and the Actor stops asking once the
ceiling is in sight, rather than handing you rows it cannot bill or billing you
for rows it cannot hand over. It finishes SUCCEEDED with the ceiling named in its
status message, and everything already delivered is yours.
Limits, and the ones that might bite
No search volume, no CPC, no difficulty. Autocomplete endpoints publish
suggestions, not metrics. relevance is Google's and Bing's own ordering
score: it is comparable within one query and meaningless across queries, and it
is not a monthly search count. alsoFrom is the closest thing here to a
popularity signal, and it is a signal about the engine's suggestion graph, not
about volume. Anything that claims real search volume for arbitrary keywords
without an ads account is estimating.
Amazon is US-only. completion.amazon.co.uk and completion.amazon.de
answer HTTP 200 with suggestions: [] for every prefix — measured on
2026-09-11 from both datacenter and residential exits — so this Actor ships the
one marketplace that works, ignores country for Amazon, and marks every Amazon
row marketplace: "amazon.com". amazonDepartment still scopes it to a
department. If Amazon's other completion hosts start answering, that is a change
to make here, not a workaround to attempt in your input.
DuckDuckGo needs a residential proxy. It closes datacenter connections
before the TLS handshake finishes. If duckduckgo is in sources, set
proxyConfiguration to
{"useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"]}. With the
datacenter default the Actor still tries, and files one free blocked row per
keyword saying exactly this — it does not fail your run or silently skip the
engine.
Locale is a request, not a guarantee. hl/gl change what Google suggests,
and the German captures show it plainly. Bing's market=de-DE is weaker: eight
of twelve suggestions for a German seed came back in English. eBay's site ID does
change the list. DuckDuckGo has no locale parameter at all. What you get is what
the engine chose to do with the locale you asked for.
Suggestions are personalised and volatile. These endpoints answer differently
by region, by time of day, and sometimes by exit IP. Two runs an hour apart will
not match exactly, and they should not — that is the data being live rather than
cached. Key a time series on scrapedAt and expect churn at the bottom of every
list.
Expansion cost is linear and it adds up. Each term is one request per source.
Five expansions × six sources × 50 seeds is 25,800 requests and roughly 40
minutes at the default concurrency — inside the 3,600 s ceiling, but only just.
Raise maxRunSecs before you raise the expansion count, or split the seed list.
The ceilings are the engines', not ours. maxSuggestionsPerQuery: 50 does
not make Google send 50. Google's chrome client sends 15, Bing about 25, and
YouTube, Amazon, eBay and DuckDuckGo about 10 each. The way to get more keywords
is more prefixes, which is what the expansions are for.
containsSeed: false is common and is not an error. Autocomplete drifts —
ask for best crm and Google will happily suggest something that does not
contain the phrase. Those rows are often the useful ones; the column is there so
you can split them out either way.
The upstream format may change. These endpoints are undocumented and their
owners change them without notice — that is true of every tool that reads this
data, including the ones that do not say so. When a shape changes, rows stop
arriving and you get free blocked diagnostic rows rather than quietly wrong
data, and a run that returns nothing bills nothing.
Rate and reliability. Requests go out through proxy sessions pinned per
worker, one rotation per block, and a 150–300 ms pause between queries of the
same job. Four jobs in parallel is the default; no rate limiting was observed at
one to two requests per second per source, but raising maxConcurrency a long
way is how you would find some.
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~keyword-suggestions-api/run-sync-get-dataset-items?token=$APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"keywords":["best crm"],"sources":["google","bing"],"expansions":["questions"]}'
# pip install apify-clientfrom apify_client import ApifyClientclient = ApifyClient("<APIFY_TOKEN>")run = client.actor("insight.solutions/keyword-suggestions-api").call(run_input={"keywords": ["best crm", "crm for real estate"],"sources": ["google", "bing"],"expansions": ["alphabet", "questions"],})rows = [r for r in client.dataset(run["defaultDatasetId"]).iterate_items() if r["ok"]]long_tail = sorted((r for r in rows if r["wordCount"] >= 4),key=lambda r: r["alsoFrom"] or 0,reverse=True,)for row in long_tail[:20]:print(row["alsoFrom"], row["source"], row["suggestion"])
FAQ
Do I need a Google account, Search Console or Keyword Planner? No. Every source here is the public autocomplete endpoint the engine's own search box calls on each keystroke. No login, no API key, no cookie.
Does this give me search volume?
No, and nothing that reads autocomplete can. You get the suggestions, their rank,
the engine's own relevance score where it publishes one, and alsoFrom — how
many different prefixes led to the same phrase. For monthly volume you need an
ads account; this is the other half of the job, the part that tells you which
phrases exist.
What is alsoFrom, exactly?
With dedupe on, the count of other queries in the same run that returned the
same suggestion for the same seed and source. Run an alphabet expansion and a
phrase with alsoFrom: 20 came back under twenty of the twenty-six letters. That
is a keyword the engine really wants to suggest.
How many keywords will one seed give me?
Seed only, three engines: 40–50. Add alphabet and you are usually in the
300–500 range; add questions too and 400–900 is typical. It depends entirely on
how broad the seed is — a narrow seed returns empty lists for most letters, and
those cost you nothing.
Why did I get fewer than maxSuggestionsPerQuery?
Because the engine sent fewer. Google's chrome client tops out at 15, Bing at
about 25, the rest at about 10. The setting is a cap, not a request.
Why is Amazon only US? Because the other Amazon completion hosts answer with an empty list for every prefix, from every exit IP we tested. Shipping them would mean returning "no suggestions" rows that look like a property of your keyword rather than of the endpoint.
Why did DuckDuckGo give me a blocked row?
Because the run used datacenter proxy. DuckDuckGo closes those connections before
TLS completes. Set apifyProxyGroups: ["RESIDENTIAL"] and it answers.
Can I get suggestions in another language?
Set language and country. Google honours them well, eBay changes storefront,
Bing honours them loosely, and DuckDuckGo has no locale parameter at all. The
language and country columns record what you asked for on every row.
How do I deduplicate between runs?
On (seed, source, suggestion) lower-cased — the same key this Actor
de-duplicates on within a run. scrapedAt gives you the version.
What happens if one engine fails?
The others still run. The failed one produces a free diagnostic row for that
keyword and the run finishes SUCCEEDED. If every job fails, the run still
finishes SUCCEEDED — with zero results, a "0 results" status message pointing
at the diagnostic rows, and nothing billed at all. It finishes FAILED only when
there was nothing usable to attempt or the Actor itself hit an error.
Is the data fresh? Live. Every run calls the endpoints at that moment; nothing is cached.
Legal and data-protection notes
- Public endpoints only. These are the same autocomplete endpoints a browser
calls while you type. The Actor never logs in, never accepts cookies or session
tokens, and never uses an API key belonging to anyone else. The Amazon request
carries a fixed placeholder
session-idbecause the endpoint requires the parameter to be present; it identifies nobody and no customer ID is ever sent. - No personal data is collected. A keyword suggestion is an aggregate of what many people typed, published by the engine. If one of your seeds is a person's name, the suggestions you get back may be about that person — that is your input and your responsibility, and the ordinary data-protection rules apply to what you do with the result.
- Suggestions are the engines' output, not facts. Autocomplete reflects what is typed, including things that are wrong, unkind or defamatory about a person or a business. Treat a row as evidence of what is searched for, not as a claim about the world.
- Not affiliated with Google, Microsoft, Amazon, eBay or DuckDuckGo. All names and trademarks belong to their owners and are used only to describe which public endpoints 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.
- 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.
- Workday Jobs API — every posting on any Workday career site, with facets, search, posted dates and full descriptions.
- 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.