Sponsor & Advertiser Finder — YouTube, Podcasts & Newsletters
Pricing
from $1.80 / 1,000 sponsorship founds
Sponsor & Advertiser Finder — YouTube, Podcasts & Newsletters
Which brands sponsor which channels, shows and newsletters: one row per brand per video, episode or post, with domain, promo code, offer, sponsor link, the sentence it came from and a confidence grade. Read from public descriptions and show notes. No host or author data. No login, no key.
Pricing
from $1.80 / 1,000 sponsorship founds
Rating
0.0
(0)
Developer
Insight Solutions
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Security
Limited permissionsShare
Find out which brands sponsor which YouTube channels, podcasts and newsletters. Give this Actor a list of channels, shows or Substack publications and get back one row per brand per video, episode or post: the brand, its domain, the promo code and offer, the sponsor link, the sentence it was read from, and a confidence grade. Plus one row per scanned item — sponsored or not — and a summary per source with every brand's count and first and last appearance. JSON, CSV or Excel.
The sponsorship is written in public text: a YouTube description ("This video is sponsored by …", "use code X for 20% off"), a podcast's show notes ("Thank you to our sponsors: AG1, LMNT, Eight Sleep"), a newsletter post ("Today's issue is brought to you by …"). This Actor reads that text — the full description of each video, the full notes of each episode, the body of each post — and turns it into rows. HTTP only: no browser, no login, no API key.
Company-level data only. Brands, channels, shows and publications are organisations; no row names a host, an author, an owner or a guest. $3.00 per 1,000 sponsorships plus $0.50 per 1,000 items scanned on the FREE tier.
Try it in 30 seconds
This is the Store prefill; paste it and run:
{ "mode": "podcast", "podcasts": ["Huberman Lab", "Lex Fridman Podcast", "The Tim Ferriss Show"], "maxItemsPerSource": 10 }
Three shows that list their sponsors in every episode's notes, ten newest episodes each: about 30 item rows and — on the pinned copies of the first two feeds in our test suite — 100 sponsorships from those two shows alone (Huberman Lab 39, Lex Fridman Podcast 61), every one high confidence. It is six requests: one Apple search per show (a few KB, through the datacenter proxy) and one feed download per show (direct, however many episodes you ask for).
A YouTube channel and a newsletter in one run:
{"mode": "mixed","youtubeChannels": ["@LinusTechTips"],"newsletters": ["lenny"],"maxItemsPerSource": 20,"since": "2026-09-01"}
Tracking a few brands across many shows:
{ "mode": "podcast", "podcasts": ["Huberman Lab", "Modern Wisdom", "The Diary Of A CEO"], "brands": ["AG1", "LMNT", "eightsleep.com"], "maxItemsPerSource": 50 }
From code — client.actor("insight.solutions/sponsorship-intelligence-api").call(run_input={"podcasts": ["Huberman Lab"]}) with apify-client, or POST https://api.apify.com/v2/acts/insight.solutions~sponsorship-intelligence-api/run-sync-get-dataset-items.
What comes back
A sponsorship row (from the pinned Huberman Lab feed; null columns cut):
{"rowType": "sponsorship","source": "podcast","sourceTitle": "Huberman Lab","itemTitle": "How Mitochondria Control Your Metabolism | Dr. Jared Rutter","itemUrl": "https://www.hubermanlab.com/episode/how-mitochondria-control-your-metabolism-jared-rutter","publishedAt": "2026-09-07T08:00:00.000Z","brand": "Function Health","brandDomain": "functionhealth.com","url": "https://functionhealth.com/huberman","finalDomain": "functionhealth.com","evidence": "Thank you to our sponsors: Function: https://functionhealth.com/huberman","confidence": "high","signal": "sponsor-block","showTitle": "Huberman Lab","feedUrl": "https://feeds.megaphone.fm/hubermanlab"}
The name was written as "Function" and the link goes to functionhealth.com; the alias table knows them as one company, and the episode's timestamp line "Sponsor: Function" is folded into the same row rather than counted twice. When a show's link and the brand's own domain differ, both are kept — from the pinned Lex Fridman feed:
{ "brand": "NetSuite", "brandDomain": "netsuite.com", "url": "http://netsuite.ai/lex", "finalDomain": "netsuite.ai", "evidence": "SPONSORS: NetSuite: Business management software. Go to http://netsuite.ai/lex", "confidence": "high" }
A YouTube read with a code and an offer comes back the same way: "promoCode": "LINUS", "offerText": "Get 70% off a 2-year plan".
An item row — one per scanned video, episode or post, sponsored or not:
{"rowType": "item","sourceTitle": "Lex Fridman Podcast","itemTitle": "#501 – DHH: Future of Programming, AI, Agentic Engineering, Vibe Coding & Linux","publishedAt": "2026-08-26T21:47:04.000Z","sponsorCount": 8,"brands": ["Wispr Flow", "Blitzy", "NetSuite", "Shopify", "LMNT", "Plaud", "Higgsfield AI", "Perplexity"],"creatorLinks": ["https://lexfridman.com/sponsors/ep501-sc", "https://lexfridman.com/survey", "…"],"descriptionChars": 2405}
And one free source row per channel, show or publication:
{"rowType": "source","sourceTitle": "Huberman Lab","itemsScanned": 10,"itemsWithSponsors": 10,"sponsorshipCount": 39,"distinctBrands": 11,"brandCounts": [{ "brand": "AG1", "brandDomain": "drinkag1.com", "items": 10, "firstSeen": "2026-08-10T08:00:00.000Z", "lastSeen": "2026-09-10T08:00:00.000Z" },{ "brand": "LMNT", "brandDomain": "drinklmnt.com", "items": 7, "firstSeen": "2026-08-10T08:00:00.000Z", "lastSeen": "2026-09-10T08:00:00.000Z" },{ "brand": "Eight Sleep", "brandDomain": "eightsleep.com", "items": 6, "firstSeen": "2026-08-13T08:00:00.000Z", "lastSeen": "2026-09-10T08:00:00.000Z" }],"requests": 2}
Anything that could not be read — a show Apple does not list, a private video, a feed that moved, a refused request — comes back as a free diagnostic row (errorType, error) instead of a charge.
Use cases
- Agencies selling sponsorships — which brands already buy integrations on shows like your clients', what codes and landing pages they use, how often they come back: the warm lead list for an ad sales team.
- Brand competitive intelligence — where your competitors sponsor, since when (
firstSeen), how consistently (itemsout ofitemsScanned), and with which offers. - Creator rate and fit benchmarking — how many sponsors a channel or show carries per episode, which categories buy it, and whether the roster is stable or churning.
- Lead lists of brands that already buy sponsorships — a company that runs creator reads has a budget and a team for it;
brand+brandDomainacross a few hundred shows is a list of exactly those companies. - Sponsor-tracking dashboards — run it on a schedule with
since, append the rows, and chart brands by source and by month.
To see the ads the same brands buy on Google — every image, video and text ad a verified advertiser runs, with first and last shown dates — use our Google Ads Transparency API.
How it compares
- Read from the sponsorship itself, not estimated. Panel- and sample-based ad-intelligence tools model who probably advertises where. This Actor returns the sponsorship as the creator published it, with the sentence it came from in
evidence, so every row can be checked by openingitemUrl. - Three source types, one schema. YouTube descriptions, podcast show notes and Substack posts come back in the same columns, so a brand that sponsors a channel and a show and a newsletter is one
brandDomainacross all three. - Every scanned item counts, not just the hits.
itemrows and the per-sourcebrandCountsmake "AG1 sponsored 10 of the last 10 episodes" a number rather than a guess. - A grade on every row.
high,mediumandlowsay what the row rests on — a sponsor block with a link, a phrase naming the brand, or only an affiliate-looking link — so a lead list can be filtered to what you trust. - Organisations only. No host, author, owner, byline or guest field is read into a row, and social-profile links — which can identify a person — are recognised and dropped.
How detection works, and the confidence scale
Each item's text is read in full — the player response's complete YouTube description (the upload list only carries a snippet), every version of an episode's notes in the feed (content:encoded, description and itunes:summary, merged so no line is lost or doubled), a post's whole body — with HTML turned into lines and every link kept where it sat, including links hidden behind anchor text. Then four readers run:
- Sponsor blocks. A heading — "Thank you to our sponsors", "SPONSORS:", "This episode is brought to you by:", "…checking out our sponsors:" — followed by one sponsor per line:
AG1: https://drinkag1.com/huberman, or a name line with its link on the next line (Wispr Flow: AI-powered voice dictation app./Go to https://wisprflow.ai/lex). The block ends at a timestamp, another heading or a line that is not an entry. An inline list on the heading's own line ("Sponsors: AG1, LMNT and Eight Sleep") is one entry per name. - Phrases in running text:
sponsored by,brought to you by,thanks to … for sponsoring,today's sponsor,this episode is supported by,paid partnership,Sponsor: …(a timestamp line), and — only with a link, a code or a known brand beside them —presented byandin partnership with. German, Spanish and French:gesponsert von,patrocinado por,sponsorisé par. A negation ("not sponsored by") and an audience ("brought to you by viewers like you") are never a sponsor. - Offers.
use code X,promo code X, a capitalisedcode X;get 20% off,free trial at …;go to <domain>/<the creator's slug>(shopify.com/lex);#adand#sponsored. A code or offer attaches to the sponsor in its sentence, its line or the line above, or makes a sponsorship from its own link. - Affiliate links with nothing else around them: a path or query carrying the creator's slug (
/huberman,?utm_source=lexfridman),ref=and similar parameters,/partner,/promo, apartner.subdomain, or a known shortener or affiliate redirector (bit.ly,geni.us,lmg.gg,shopmy, …). Not inside a links section ("EPISODE LINKS:", "Follow us"), and never on a possessive label ("Don's LinkedIn").
Never a sponsorship: the creator's own site and its own membership page (returned as creatorLinks, free), social profiles, the platforms the show is published on (YouTube, Apple, Spotify, Substack, the feed host), and any bare domain with no phrase or affiliate marker around it — a guest's website or a book is not an advertiser.
The brand is the name the creator wrote, normalised through an alias table of about seventy companies that buy most creator sponsorships (so Better Help is BetterHelp, Athletic Greens is AG1, and drinklmnt.com is LMNT), or — with no name written — the link's domain title-cased (wisprflow.ai → "Wispr Flow" from the table, davidprotein.com → "Davidprotein" without it). A brand that is not in the table is still found; the table is a normaliser, not a whitelist. One row per brand per item, de-duplicated on brandDomain (else the name), keeping the strongest evidence and every code, offer and link either version had.
The confidence scale:
confidence | What it rests on | Example |
|---|---|---|
high | A sponsorship phrase or sponsor block and a link to the brand or a promo code | AG1: https://drinkag1.com/huberman under "Thank you to our sponsors" |
medium | A phrase or sponsor-block entry naming the brand, with no link or code | "This episode is sponsored by Claude." |
low | An affiliate-pattern link and nothing else — a lead, not a fact | Earbuds I use: https://buyraycon.com/linus |
A text-level #ad lifts a lone affiliate link from low to medium. signal names the rule that fired (sponsor-block, sponsored-by, promo-code, affiliate-creator-slug, …). On the two pinned real feeds in the test suite every one of the 156 sponsorships is high except one medium (an old Lex Fridman episode whose only link for that sponsor is the show's own redirect).
Input reference
| Field | Type | Default | What it does |
|---|---|---|---|
mode | select | podcast | youtube, podcast, newsletter or mixed (all three lists). A list the mode does not read is ignored. |
youtubeChannels | string[] | [] | Handles (@mkbhd), channel URLs or UC… IDs. |
podcasts | string[] | prefill: 3 shows | Show names (resolved through Apple's search, first hit), Apple Podcasts links or IDs, or RSS feed URLs. |
newsletters | string[] | [] | Substack subdomains (lenny), publication URLs (custom domains too) or post links (their publication is read). |
maxItemsPerSource | integer | 30 (prefill 10) | 1–500 newest videos, episodes or posts per source. |
since | string | — | 2026-09-01 (midnight UTC) or a full timestamp. Older items are skipped and never billed. Not a date → the run fails before any request. |
brands | string[] | [] | Report only sponsorships matching one of these names (AG1, Athletic Greens) or domains (drinkag1.com). Item rows still come back, with only the matching brands. |
includeItemsWithoutSponsors | boolean | true | Return an item row for every scanned item; off, only items carrying a (matching) sponsorship are returned — and billed. |
resolveLinks | boolean | false | Follow each sponsor link and each shortener once, redirects only, body never read, 5 s each, cached: fills finalDomain with where it lands, and names the brand behind a shortener. Time, not money. |
maxConcurrency | integer | 3 | Sources scanned at once (1–10). |
maxRunSecs | integer | 240 | 30–3,600. Rows already returned are kept — and billed — when it runs out. |
proxyConfiguration | object | { "useApifyProxy": true } | Apify datacenter by default. See Limits for which requests use it. |
Duplicates are dropped on what each entry names (@NASA twice, a show by name and by the same name in another case, two links to one publication), so nothing is read or billed twice. A run with nothing usable to read — an empty list for the mode, entries that are none of the three, a since or mode that is not valid — finishes FAILED before a single request, with a free row saying which entry was the problem.
Output reference
Every row has the same columns, null where a column does not apply, so the dataset exports as one table. rowType is sponsorship, item, source or diagnostic.
On every row: ok, rowType, input (your entry, as typed), source (youtube · podcast · newsletter), sourceTitle (channel, show or publication title), sourceUrl, errorType, error, scrapedAt.
Sponsorship and item rows: itemId (video ID, episode GUID or post ID — the join key), itemTitle, itemUrl, publishedAt, and per source:
| Source | Columns |
|---|---|
| YouTube | videoId, viewCount, channelTitle, channelId, channelUrl, proxyPath (datacenter, residential or direct — which exit answered) |
| Podcast | episodeGuid, episodeUrl, audioUrl, durationSecs, showTitle, feedUrl |
| Newsletter | canonicalUrl, postDate, publicationName, publicationUrl |
Sponsorship rows (paid): brand, brandDomain, promoCode, offerText (≤ 200 characters), url (the sponsor link as published), finalDomain, evidence (the sentence or block line, ≤ 300 characters), confidence, signal.
Item rows (paid): sponsorCount, brands[], creatorLinks[] (the source's own site and membership page), descriptionChars.
Source rows (free): itemsScanned, itemsWithSponsors, sponsorshipCount, distinctBrands, brandCounts[] (brand, brandDomain, items, firstSeen, lastSeen, most frequent first), itemsSkipped (older than since), requests, diagnostics.
Diagnostic rows (free):
errorType | Meaning |
|---|---|
invalid-input | An entry that is not a handle, show, feed or publication; a mode or since that is not valid. |
not-found | No such channel, show, feed, publication or post; a private or members-only video; a show Apple lists with no public feed. |
blocked | A 403, 429 or bot-check, twice, from two exits (and, for a YouTube video, once more through a residential exit). |
consent-wall | YouTube served the EU consent page instead of the video, on every path. |
timeout | A request that did not answer in time, or the run's budget running out. Rows already returned are kept. |
parse-failed | An answer without the data this Actor reads — a web page where a feed should be, a player response with no video details. |
unavailable | Any other upstream refusal, such as a video YouTube will not play on any client. |
internal | This Actor's own error. The run is then FAILED. |
Pricing
| Event | What it is | FREE | BRONZE | SILVER | GOLD |
|---|---|---|---|---|---|
actor-start | Once per run, only after the run has returned a paid row | $0.001 | $0.001 | $0.001 | $0.001 |
sponsorship | One brand on one video, episode or post | $0.003 | $0.003 | $0.0024 | $0.0018 |
item | One scanned video, episode or post, sponsored or not | $0.0005 | $0.0005 | $0.0005 | $0.0005 |
$3.00 per 1,000 sponsorships, plus $0.50 per 1,000 items scanned.
| Run | Cost |
|---|---|
| The prefill as the offline test suite runs it — 30 items, 118 sponsorships | $0.370 |
| Its two real shows alone, on their pinned feeds — 20 items, 100 sponsorships | $0.311 |
| A YouTube channel with no sponsor reads, 30 videos | $0.016 |
| 10 shows × 20 episodes at 5 sponsors an episode | ≈ $3.10 |
The same, tracking one brand with brands | ≤ $0.701 |
The prefill's third show has no pinned capture, so the suite reads a hand-written feed for it; a live run costs the $0.311 of the first two shows plus $0.005 for the third show's ten items plus $0.003 per sponsor its notes name.
Charging is charge-after-push: rows are in your dataset before the event is recorded. An item is delivered whole or not at all — its item row and all of its sponsorship rows are checked against ACTOR_MAX_TOTAL_CHARGE_USD together — and the run stops fetching when the next item would not fit, finishing SUCCEEDED and saying so. Never charged: source rows, diagnostic rows, items older than since, items that could not be read, sponsorships your brands filter excluded, and a run that returns nothing (start fee included). A run that scanned items and found no sponsorship is SUCCEEDED — "Scanned N items, no sponsorships detected" — and its item rows bill.
Limits
- Only written sponsorships are visible. A sponsor read that is spoken in the video or the audio but not written in the description, and podcast ads inserted dynamically by the host platform, never appear in the text this Actor reads. A show with no sponsors in its notes may still run ads.
- YouTube: datacenter first, residential only where earned. The upload list and every
playerrequest start on Apify's datacenter proxy; a request refused twice (two exits) is repeated once through a residential exit the Actor creates itself, at most once per video, and a channel list refused twice is walked once through it.proxyPathon each item says which answered. A video refused everywhere is a freeblockedrow. - Podcasts and Substack go direct first. Feeds and Substack's endpoints are fetched without a proxy and moved to the datacenter proxy only after a host refuses; Apple's search and lookup go through the proxy.
- Paywalled posts are read as Substack serves them to a visitor: the free preview. A sponsor named below the paywall is not seen.
- A show name is Apple's first search hit. Check
sourceTitleandfeedUrl, or pass the Apple link or the feed URL to be exact. - YouTube dates:
publishedAtcomes from the player response when the client that answered sends a date, otherwise from the upload list's "3 weeks ago" (approximate, as the text is). Withsince, the list stops at the first upload whose approximate date is more than 45 days before the cutoff, and each fetched video is then judged on its date. - Languages: English phrases throughout, plus
gesponsert von,patrocinado porandsponsorisé par. A sponsor block in another language is found through its links and codes, not its heading. - The alias table normalises about seventy brands. Others keep the name as written; two spellings of an unlisted brand that share no domain stay two brands.
- Limits per run: 500 items per source;
maxRunSecsup to 3,600 s. Player requests within one channel are paced 100–300 ms apart and list pages 250–600 ms apart. - The upstream formats may change: this Actor reads YouTube's InnerTube JSON, RSS feeds and Substack's JSON as they are served today, and returns a free
parse-failedrow rather than a wrong one when an answer no longer has the data it expects. - Not affiliated with YouTube, Apple, Substack, or any brand, channel, show or publication named in the output. Names are used descriptively, to say what was read and what was found.
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 and pay-per-event pricing and never enters Standby, so it works over the Apify MCP server (mcp.apify.com) and with agentic (x402) payments. The Integrations tab pushes results to Slack, a webhook, Zapier, Make, Google Sheets, Snowflake or BigQuery, and Apify Schedules run it unattended — with since, each run reads only what is new.
curl -X POST "https://api.apify.com/v2/acts/insight.solutions~sponsorship-intelligence-api/run-sync-get-dataset-items?token=$APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"mode":"podcast","podcasts":["Huberman Lab","Lex Fridman Podcast"],"maxItemsPerSource":20}'
# pip install apify-clientfrom apify_client import ApifyClientclient = ApifyClient("<APIFY_TOKEN>")run = client.actor("insight.solutions/sponsorship-intelligence-api").call(run_input={"mode": "mixed","podcasts": ["Huberman Lab"],"youtubeChannels": ["@LinusTechTips"],"maxItemsPerSource": 20,})for row in client.dataset(run["defaultDatasetId"]).iterate_items():if row["rowType"] == "sponsorship" and row["confidence"] != "low":print(row["sourceTitle"], row["publishedAt"], row["brand"], row["brandDomain"], row["promoCode"], sep=" | ")elif row["rowType"] == "source":print(row["sourceTitle"], [(b["brand"], b["items"]) for b in row["brandCounts"][:5]])
Building an app with Lovable? Apify's Lovable connector runs any Actor from inside a Lovable project with your Apify token. Connect Apify in Lovable once, then ask it: "Use Apify to run insight.solutions/sponsorship-intelligence-api for my list of podcasts and build a sponsor-tracking dashboard around the results." At the default settings a run of a few shows finishes well inside Lovable's 300-second synchronous limit, and every result is one JSON object per row, so the generated app needs no extra parsing. Usage bills to the Apify account whose token is connected.
FAQ
Why does a show I know is sponsored come back with no sponsorships?
Its sponsors are not written in its show notes — the ads are read aloud, or inserted into the audio by the hosting platform. This Actor reads text; the item rows (with descriptionChars) show exactly what was scanned. Many shows do write every sponsor down, and those are the ones this finds in full.
What is the difference between brandDomain and finalDomain?
brandDomain is the company's own domain — from the alias table for a known brand, else the sponsor link's. finalDomain is where the published link goes: the same domain, a different one (netsuite.ai for NetSuite), or, with resolveLinks, wherever its redirects end. Group by brandDomain.
Should I trust low rows?
Treat them as leads. A low row is a link that looks like a sponsor's tracking link — the creator's slug in the path, a ref=, a shortener — with no sponsorship wording around it. It is often an affiliate link the creator earns commission on, which is a commercial relationship, but not always a paid sponsorship. Filter on confidence to taste.
How is "Sponsor: Eight Sleep" in a timestamp list counted?
As the same sponsorship as the "Eight Sleep: https://eightsleep.com/huberman" line in the sponsor block above it: one row, carrying the block's link and its high grade.
Can it tell me how much a brand paid? No. Sponsorship prices are not published in descriptions. What this gives you is who, where, how often and since when — the inputs a rate estimate starts from.
Does it read the creator's or guests' social links?
It recognises them so they are never counted as sponsors, and leaves them out of every row: a profile link can identify a person. The source's own website and membership page are returned in creatorLinks.
Can I scan only new episodes each week?
Yes: schedule it with since set to last week's date. Older items are skipped before they are scanned and are never billed.
Legal and data-protection notes
- Public text only. Everything this Actor reads is served to any anonymous visitor: YouTube's public upload lists and player responses, Apple's public podcast search, the RSS feeds publishers distribute for anyone to read, and Substack's public archive and post endpoints. It never logs in, never supplies cookies or session tokens, and never accepts credentials.
- Organisations, not people. Brands, channels, shows and publications are organisations, and they are what the rows describe. Creator names appear only where they are part of a channel's, show's or publication's own title. No host, author, owner, byline or guest field is read into a row: the feed's
itunes:authoranditunes:owner, Apple's artist name and Substack's bylines are dropped before a row is built, and social-profile links are never copied. Video, episode and post titles and the quotedevidencesentence are returned as published. - No profiling of individuals. There is no person search and no input that names a person; the Actor cannot be pointed at an individual.
- We are not a data broker. This Actor holds no database and sells no list. It reads public text on demand and writes the result to your dataset on your account.
- Not affiliated with, endorsed by or sponsored by YouTube, Google, Apple, Substack, any brand detected, or any channel, show or publication read. Names and trademarks are used descriptively.
- You are responsible for how you use the output, including any outreach to the brands or creators it names, under the GDPR, the CCPA, ePrivacy, CAN-SPAM and applicable marketing law. Nothing here is legal advice.
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.
- Google Ads Transparency API — Advertisers, Ads & Creatives — every ad a verified advertiser runs on Google, from the Ads Transparency Center, by brand name, AR id or domain: format, first and last shown, days shown and preview links, individuals excluded.
- 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.
- Company Contact Finder — company names in, each one's verified website with its business emails, phone numbers and social profiles out.
- 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.
- Litigation Signals API — Lawsuits, Settlements & Investigations — lawsuits, settlements and investigations per public company from SEC 10-K, 10-Q and 8-K disclosures, press wires and SEC, FTC and DOJ notices, company-level only.
- Funding Signals API — Rounds from SEC Form D, Wires & News — who just raised money: one row per funding round from SEC Form D filings, press wires and Google News, with amount, round, investors, industry and state, company-level only.
- 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.
- Careers Page Jobs API — Open Roles from Any Company's Site — open roles from any company's own careers site: domain in, the platform recognised (Eightfold, Phenom, Jibe, iCIMS, Google, Amazon, 14 ATSs) or the site's structured data read, one row per job.
- 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.
- Price Tracker API — Prices, Stock & Changes from Any Retailer — price, stock, list price and discount from any product URL, read from the page's structured data, with price-drop and restock rows between runs.
- 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.
- Shopify Store Finder — Discover & Verify Stores by Niche — Shopify stores by niche and country, each verified on its own storefront, with product count, currency, country, price range and sample products.
- 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.