Newsletter Sponsor Finder: InboxReads Directory Scraper
Pricing
from $2.00 / 1,000 newsletter results
Newsletter Sponsor Finder: InboxReads Directory Scraper
$4/1K newsletters | Find newsletters that accept sponsorships, swap promotions or are for sale. Topics, cadence, audience countries and ad platforms where listed. No login or API key. Not affiliated with InboxReads.
Pricing
from $2.00 / 1,000 newsletter results
Rating
0.0
(0)
Developer
Nomad.Devs
Maintained by CommunityActor stats
0
Bookmarked
12
Total users
5
Monthly active users
3 days ago
Last modified
Categories
Share
$4/1K newsletters | Find newsletters that accept sponsorships, swap promotions or are for sale. Topics, cadence, audience countries and ad platforms where listed. No login or API key. Not affiliated with InboxReads.
InboxReads Newsletter Sponsorship Search
Our scraper collects newsletters from the public InboxReads directory and lets you filter by topic, language, sponsorship acceptance, cross-promotion, for-sale status and the ad platform a newsletter sells through. Every row carries the newsletter's pitch, topics, send cadence and the sponsorship signals shown on its listing. It is ideal for sponsor prospecting, newsletter market research and acquisition scouting.
Key Benefits
- No login or API key: nothing to set up and no account at risk, because the Actor reads only public listing pages.
- Low pricing: $4.00 per 1,000 newsletters on the Free plan, $3.53 on Starter, $3.00 on Scale and $2.00 on Business.
- Sponsor-ready filters: keep only newsletters that accept sponsorships, are open to cross-promotion or are for sale.
- Buying route, where detected:
sponsorshipPlatformslists the ad networks (such as Paved or BuySellAds) found in a newsletter's tooling. - No repeats across runs: schedule the same search and newsletters already delivered to you are skipped.
How It Works
- Choose your topics (e.g.,
business,marketing,finance) or leave them empty for the whole directory. - Narrow the list:
- (optional) Only newsletters accepting sponsors (e.g.,
true). - (optional) Sponsorship platforms (e.g.,
Paved,BuySellAds). - (optional) Language (e.g.,
english,spanish).
- (optional) Only newsletters accepting sponsors (e.g.,
- Run the Actor and download the dataset as JSON, CSV or Excel.
The Console form is prefilled with business and marketing topics, sponsors only, and 15 newsletters, so one click on Start returns real rows. A second click with the same search returns only newsletters you have not received yet, and may return none; set dedupe.enabled to false to see everything again.
More settings:
maxItems- Maximum number of newsletters to return and bill.0means no cap (the whole directory). Default is100.concurrency- Parallel listing fetches. Default is4.
You pay only for newsletters returned, never for listings scanned and filtered out; the run stops at maxItems.
InboxReads gates subscriber counts and open rates behind its Pro plan, so this Actor does not return them. Some listings omit details: in a 10-newsletter sample, audience countries were present on 8, sponsorship platforms on 7, a sponsor-contact flag on 7, an advertise link on 5 and a launch date on 3.
Data You'll Receive
- Newsletter: name, tagline, description, topics, language and listing URL.
- Sponsorship signals: accepts sponsorships, open to cross-promotion, for sale.
- Sponsor route: sponsorship platforms and tools (on some newsletters), plus flags for a sponsor-contact route and an advertise link.
- Cadence: send interval and frequency.
- Audience: top reader countries with a relative score (on most newsletters).
- Directory data: favourites, ranks, listing timestamps and related newsletters.
- Stable
id(inboxreads:<slug>) for deduplication across runs.
Sample output data
Here is an example newsletter from this Actor:
{"id": "inboxreads:theskimm","listingId": 981,"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": 178,"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": 2045,"audienceCountryCount": 2045,"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": []}
InboxReads Newsletter API
Results are stored in a dataset that you can export as CSV, JSON or Excel, or read on demand through the Apify API.
Support and Feedback
We improve these scrapers from your feedback. If something breaks or you need a filter:
- Open an issue on the Actor's Issues tab
- If this Actor saved you time, a short review on the Store helps other users find it.
Run evidence
Start with one input and output
An Apify account is required. Use your Apify API token when calling the API; Console runs do not need that token pasted into the input. No source login or AI-provider key is required for this quickstart. none.
Cost: Total = Actor event charges + platform usage if separately billed + any BYO-provider charges. See “Current costs” for your event rates, plan tiers and a calculation. A sample does not promise future billable volume.
Input and output below were read from the same successful run oiRnh7eCiluop8BrB (2026-10-04, immutable build HJ5anGC64pMUpTKd7). This is an observed example, not a guarantee that repeating it returns this row. It used the selected build at capture time.
Input JSON
{"onlyAcceptingSponsors": false,"onlyOpenToCrossPromotion": false,"onlyForSale": false,"maxItems": 100,"concurrency": 4,"analyticsEnabled": false}
Matching output excerpt
Long strings and arrays are shortened for display; this is not a complete dataset fixture.
{"id": "inboxreads:theskimm","listingId": 981,"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"],"language": "english","sendIntervalDays": 1,"sendFrequency": "daily","acceptsSponsorships": true,"allowsCrossPromotion": false,"isForSale": false,"paidStatus": "free","hasSponsorContact": false,"hasAdvertiseUrl": true,"favourites": 177,"ranks": {"all": 2,"news": 2,"sports": 2,"business": 2,"politics": 2,"entertainment": 1},"audienceCountries": [{"country": "United States","score": 191},{"country": "India","score": 22}],"audienceCountryTotal": 2024,"audienceCountryCount": 2024,"emailTools": [{"name": "Paved","category": "sponsorship"},{"name": "BuySellAds","category": "sponsorship"}],"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"],"parseConfidence": "high","warnings": []}
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).
A focused sponsorship shortlist
Start with topics: ["business"], onlyAcceptingSponsors: true, language: "english" and maxItems: 25. Compare the returned public sponsorship-platform, cadence and audience-geography signals, then open each listing to confirm its current contact or media-kit route. Export a shortlist keyed by stable id and retain your capture date. On later runs, compare those IDs downstream; this Actor does not create an outreach campaign or a schedule for you.
Public directory signals do not establish subscriber reach or campaign performance. A sponsor-contact flag means a route exists, not that an email address was extracted. Use the API example below with the bounded input above; check the current Apify event prices before executing it.
What makes this different
This Actor is built around sponsor intelligence: first-class, filterable fields such as:
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 | (none; form prefill ["business", "marketing"]) | Only newsletters tagged with at least one of these topics (case-insensitive). Empty list or absent = 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 analytics endpoint. 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}'
Run the same search again and you get only newsletters you have not received yet; set dedupe.enabled to false to see everything again.
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. The Actor’s Pricing tab lists the current per-record and per-run charges for your Apify plan. Filters run before billing; records filtered out are not charged. Estimate your run using the current rates and maxItems, and use a charge limit for API runs. Directory size changes over time.
Build a prospect list for a specific sponsorship use case, then inspect the public listings to confirm their current contact routes. This Actor bills runs and returned records rather than selling a prospecting 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.
Fast setup and source code
Public repository · Agent setup skill.
Use the Actor’s current input form for filters, or start with its documented API example. Select the latest build. Read the dataset together with the run summary: a successful status alone does not show that every source was reached.
Restrictive filters or repeat-delivery suppression can produce zero results.
Observed output example
Selected fields from a real source record inspected on 2026-10-03; consult the output schema for the full contract. Values change with the source.
{"id": "inboxreads:theskimm","listingId": 981,"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": 177,"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": 2020,"audienceCountryCount": 2020,"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": []}
Product guides and related tools
Current costs
Current Actor event rates, checked 2026-10-18. USD; use the Pricing tab for your plan and later changes.
| Event | Free | Bronze | Silver | Gold | Platinum | Diamond |
|---|---|---|---|---|---|---|
Newsletter result (result) | $0.004 | $0.00353 | $0.003 | $0.002 | $0.002 | $0.002 |
Actor start (actor-start) | $0.00005 | $0.00005 | $0.00005 | $0.00005 | $0.00005 | $0.00005 |
For example, 100 × result, 1 × actor-start totals $0.40005 in Actor event charges on Free. This is an arithmetic example; actual charged events depend on the run and selected options. It is not a promise of output or a charge for simply setting an item cap.
Your total is the charged Actor events, plus platform usage only if this Actor’s Pricing tab bills it separately, plus any external provider you use with your own key. Do not add platform usage twice when it is included. Apify credits and plan discounts affect your invoice. Set a run cost limit in Console before starting.