Newsletter Sponsor Finder — InboxReads Directory Scraper
Pricing
from $2.60 / 1,000 newsletter results
Newsletter Sponsor Finder — InboxReads Directory Scraper
Find newsletters that accept sponsorships, cross-promotions or are up for sale — from the InboxReads public directory. Topics, cadence, audience geo, ad-platform and sponsor-contact signals per newsletter. For sponsor prospecting and market research. From $0.004/newsletter, no subscription.
Pricing
from $2.60 / 1,000 newsletter results
Rating
0.0
(0)
Developer
NomadDev
Maintained by CommunityActor stats
0
Bookmarked
5
Total users
5
Monthly active users
4 days ago
Last modified
Categories
Share
Claude / Codex skill to describe and setup this actor: SKILL.md
Find newsletters that accept sponsorships, are open to cross-promotion or are up for sale — scraped from the InboxReads public directory (3,365 listings in the 2026-08-17 sitemap snapshot). Per newsletter: topics, send cadence, audience geography, the email/sponsorship tooling it runs on (Paved, BuySellAds, Passionfroot, beehiiv, Mailchimp...), whether a sponsor-contact route exists, and directory popularity ranks. No login, no proxies.
Built for sponsor prospecting (media buyers and brands hunting placement inventory), newsletter competitive research, and acquisition scouting (onlyForSale).
What makes this different
Other InboxReads scrapers return name, description and topics. This one is built around sponsor intelligence — a combination of first-class, filterable fields no other newsletter-directory Actor exposes:
acceptsSponsorships,allowsCrossPromotion,isForSale— filter the directory straight down to buyable / swappable / acquirable inventory.sponsorshipPlatforms— the ad networks a newsletter actually sells through (Paved, BuySellAds, Passionfroot...), detected from its tooling stack rather than self-reported, so you know where to go buy. Filter on it directly.hasSponsorContact/hasAdvertiseUrl— whether a contact route / media kit exists.audienceCountries— reader geography, for market-matched buys.
On the fields we deliberately leave out: we do not emit subscriber counts or open/click rates. InboxReads gates those behind its Pro plan on every public listing, so a scraper can only ever return them as null (or a fabricated guess). We return what is actually public and skip the always-empty columns — see the FAQ below.
Input
| Field | Type | Default | Description |
|---|---|---|---|
topics | array of strings | ["business", "marketing"] | Only newsletters tagged with at least one of these topics (case-insensitive). Empty list = all topics. Full topic list: inboxreads.co/topics. |
onlyAcceptingSponsors | boolean | false | Only newsletters whose listing says they accept paid sponsorships/ads (roughly half the directory). |
onlyOpenToCrossPromotion | boolean | false | Only newsletters open to cross-promotion swaps. |
onlyForSale | boolean | false | Only newsletters marked as up for sale. |
sponsorshipPlatforms | array of strings | (empty) | Only newsletters that sell sponsorships through at least one of these platforms (case-insensitive), e.g. Paved, BuySellAds, Passionfroot. Detected from the tooling stack, not self-reported. Empty = any platform. |
language | string | (empty) | Only newsletters written in this language, e.g. english, spanish. Empty = any. |
maxItems | integer | 100 | Stop after this many newsletters have been returned (= billed results). Filters don't shrink your result count — the scraper keeps scanning until it has this many matches or the directory is exhausted. 0 = no cap (whole directory; 3,365 listings in the 2026-08-17 sitemap snapshot). |
concurrency (Advanced) | integer | 4 | Parallel listing fetches. Keep low — this is a small independent directory site. |
analyticsEnabled (Privacy) | boolean | false | Opt in to privacy-safe aggregate debug analytics sent to the Actor creator's Netcup receiver. No caller IDs, filters, records, URLs, source text, raw errors or credentials are sent. |
What newsletter data does this scraper extract?
One flat JSON record per newsletter listing:
| Field | Meaning |
|---|---|
id | Stable id, inboxreads:<slug> |
listingId | InboxReads' numeric listing ID, useful for source reconciliation |
source | Always inboxreads |
slug | Listing slug |
url | Listing page on InboxReads |
name | Newsletter name |
tagline | Verbatim one-line pitch from the public directory listing; InboxReads controls its length |
description | Verbatim description from the public directory listing; not generated, summarized, or truncated by this Actor. It is listing copy, not a newsletter issue or full editorial archive. |
topics | Topic tags, e.g. ["business", "tech"] |
language | Language, e.g. english |
sendIntervalDays | Send cadence in days (1 = daily, 7 = weekly) — null if not stated |
sendFrequency | Human label derived from the above (daily, weekly, biweekly, ...) |
acceptsSponsorships | true if the listing says it accepts paid sponsorships/ads |
allowsCrossPromotion | true if open to cross-promo swaps |
isForSale | true if the newsletter is listed for sale |
paidStatus | free / paid-subscription status of the newsletter itself |
hasSponsorContact | true if the directory exposes a contact route for this newsletter |
hasAdvertiseUrl | true if the newsletter publishes its own advertise/media-kit link |
favourites | Directory likes — popularity proxy |
ranks | Directory rank overall and per topic, e.g. {"all": 1, "news": 1} |
audienceCountries | Top reader countries with relative score, [{"country", "score"}] |
audienceCountryTotal | Raw total supplied with InboxReads' country distribution. It is not a number of countries and the public listing does not document its unit, so do not interpret it as subscribers. |
audienceCountryCount | Deprecated compatibility alias for audienceCountryTotal; retained for existing integrations and carries the same raw value. |
emailTools | Detected stack, [{"name", "category"}] — category sponsorship shows which sales platform (Paved, BuySellAds, Passionfroot...) the newsletter sells through |
sponsorshipPlatforms | Flat list of the sponsorship sales platforms from emailTools, e.g. ["Paved", "BuySellAds"] — the actionable "where to go buy" signal, and the sponsorshipPlatforms input filters on it |
listingApprovedAt / listingCreatedAt / listingUpdatedAt | Listing timestamps (ISO 8601) |
launchedAt | Newsletter launch timestamp, when stated by the listing |
hasPublicArchive / hasSampleIssue | Public-directory signals that an archive or sample issue exists; this Actor does not fetch either resource |
relatedSlugs | Similar newsletters (slugs) — feed them back in as seeds |
parseConfidence | high / medium / low — how cleanly the page parsed |
warnings | Parse warnings, empty when clean |
Subscriber counts and open/click rates are not included: InboxReads gates them behind its Pro plan on every listing we sampled, and this actor only reads public pages — no always-empty columns, no fabricated numbers.
How to find newsletter sponsorship inventory with this Actor
- Set topics to your target verticals (
marketing,finance,ai, ...) — or leave empty for the whole directory. - Turn on Only newsletters accepting sponsors to keep just the sponsorable inventory; add language if you buy in one market.
- Read
sponsorshipPlatformsin the output — the platforms (Paved, BuySellAds, Passionfroot...) where that newsletter actually sells placements, i.e. where to go buy. To target one ad network, put its name in the Sponsorship platforms input (e.g.["Paved"]) and only newsletters selling through it come back. - Schedule the run and compare snapshots downstream to monitor newly listed newsletters (new inventory alert).
- Export JSON, CSV or Excel — or call it over the API:
from apify_client import ApifyClientclient = ApifyClient("<YOUR_APIFY_TOKEN>")run = client.actor("nomad-agent/newsletter-sponsors-scraper").call(run_input={"topics": ["marketing", "business"],"onlyAcceptingSponsors": True,"maxItems": 200,})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item["name"], "|", item["sendFrequency"], "|", item["url"])
curl -X POST \"https://api.apify.com/v2/acts/nomad-agent~newsletter-sponsors-scraper/run-sync-get-dataset-items?token=<YOUR_APIFY_TOKEN>" \-H "Content-Type: application/json" \-d '{"topics": ["marketing"], "onlyAcceptingSponsors": true, "maxItems": 100}'
Output example
Real record (fetched 2026-07-02):
{"id": "inboxreads:theskimm","source": "inboxreads","slug": "theskimm","url": "https://inboxreads.co/n/theskimm","name": "Daily Skimm","tagline": "The morning newsletter that millions wake up to","description": "Meet, news without all the noise. The Daily Skimm connects the dots on how the day's biggest stories affect your life.","topics": ["news", "business", "sports", "politics", "entertainment"],"language": "english","sendIntervalDays": 1,"sendFrequency": "daily","acceptsSponsorships": true,"allowsCrossPromotion": false,"isForSale": false,"paidStatus": "free","hasSponsorContact": false,"hasAdvertiseUrl": true,"favourites": 174,"ranks": {"all": 2, "news": 2, "sports": 2, "business": 2, "politics": 2, "entertainment": 1},"audienceCountries": [{"country": "United States", "score": 191},{"country": "India", "score": 22},{"country": "Morocco", "score": 14},{"country": "Brazil", "score": 12},{"country": "Canada", "score": 12}],"audienceCountryTotal": 1911,"emailTools": [{"name": "Paved", "category": "sponsorship"},{"name": "BuySellAds", "category": "sponsorship"},{"name": "Marigold Engage by Sailthru", "category": "email service provider"}],"sponsorshipPlatforms": ["Paved", "BuySellAds"],"listingApprovedAt": "2017-09-08T16:45:16.000Z","listingCreatedAt": "2017-09-08T16:45:16.000Z","listingUpdatedAt": "2024-09-24T22:30:18.311Z","launchedAt": null,"hasPublicArchive": false,"hasSampleIssue": false,"relatedSlugs": ["axios-am-pm", "need-2-know", "tip-news", "1440-daily-digest", "daily-dose-1", "boardroom-newsletters"],"parseConfidence": "high","warnings": []}
Pricing
Pay per event: $0.004 per newsletter record pushed (volume discounts down to $0.0026 on higher Apify plans) plus a negligible $0.00005 per Actor start. Filters run before billing — records filtered out are never charged. A typical filtered topic run (maxItems: 100) costs $0.40; a full-directory sweep (maxItems: 0, no filters) is 3,365 records in the 2026-08-17 sitemap snapshot, or about $13.46 at the base result price.
Compare: newsletter-sponsorship prospecting subscriptions run $8–58/month (InboxReads Pro) to $39–199/month (SponsorGap, Passionfroot). One $0.40 run builds a prospect list for a single use case — pay only when you actually pull data, with no subscription.
FAQ
Where does the data come from? The public InboxReads directory (inboxreads.co) — listing pages only. The actor respects the site's robots.txt: InboxReads' own media-kit, ad-rate, sponsor-list and API paths are disallowed there and are never fetched.
Why are there no subscriber counts or CPM prices? InboxReads gates subscriber/open-rate/click-rate metrics behind its Pro plan, and newsletter rate cards live on each newsletter's own media-kit page. This actor reports what is public: sponsorship acceptance flags, contact/advertise-URL signals and which sponsorship platform each newsletter sells through (emailTools) — enough to build a prospect list; pricing conversations happen on the newsletter's own advertise page.
How fresh is the data? Each run fetches live pages. listingUpdatedAt tells you when the newsletter's listing itself last changed.
Some fields are null — why? Newsletters self-report unevenly. Fields the listing doesn't state come back null (never guessed); parseConfidence + warnings flag records where the page shape looked unusual.
What happens if the source or dataset is unavailable? Dataset rows are always newsletter records, never synthetic error rows. A source outage before any records are available, or a run where no valid records can be persisted, correctly fails the run. Individual listing failures and later batch-write failures do not discard rows already persisted; the run log states the exact partial-delivery count. If a result charge cannot be confirmed after a successful dataset write, the row remains delivered and the Actor does not retry the ambiguous charge.
Integrations
Export results as JSON, CSV or Excel, or wire this Actor into Make, Zapier or n8n; call it programmatically with run-sync-get-dataset-items; or use it from AI agents via the Apify MCP server.
Found sponsorship inventory with this Actor? A quick ⭐ review on the Actor page helps other media buyers find it — and tells us which signals to add next. Missing a field or a filter? Open an issue and we usually ship it within days.