Newsletter Scraper
Pricing
from $0.10 / 1,000 newsletter scrapeds
Newsletter Scraper
Find newsletters by topic and read public Substack and LinkedIn newsletter details and issues. Get names, authors, article text, images, and public counts when available for newsletter research.
Pricing
from $0.10 / 1,000 newsletter scrapeds
Rating
0.0
(0)
Developer
Maxime Dupré
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
📰 Find newsletters and collect public issues
Newsletter researchers, content teams, and developers can use Newsletter Scraper to find newsletters by topic and read public Substack and LinkedIn newsletters. Get newsletter details or issue rows with text, authors, dates, images, and public counts when available. Use the dataset to compare publications, review articles, or build a research table without copying each page by hand.
- Build a topic research list with the newsletter finder.
- Review public creator profiles and contact details with the newsletter author scraper.
- Collect public posts for a reading archive with the Substack archive scraper.
- Save public issue text for content research with the LinkedIn article scraper.
- Compare stated newsletter subscription plans and public subscriber counts when available.
📚 Newsletter details and readable issue content
Choose one of two result types for each run:
- Newsletters finds newsletters across publishing platforms by topic, or reads Substack and LinkedIn newsletter URLs. Rows can include names, descriptions, topics, images, links, pricing models, and sending frequency. Substack rows can also include public author profiles, contact emails, social links, subscriber statements, creation dates, and subscription offerings.
- Issues collects public Substack posts or LinkedIn newsletter editions. Rows include readable text and can include HTML, Markdown, authors, dates, images, and engagement counts. Substack rows can also include tags, language, access information, and previews.
Data varies by platform and page. Missing optional values may be absent or empty. Author follower counts and newsletter subscriber counts are separate fields. Subscriber statements keep words such as “over” rather than turning them into exact counts.
▶️ Choose a topic or newsletter URL and run
- Choose Newsletters or Issues.
- For Newsletters, choose Topic and enter published topic names, or choose Newsletter URLs and add Substack or LinkedIn newsletter links.
- For Issues, add newsletter URLs to collect archive posts or exposed editions, or add direct issue URLs.
- Set Maximum results to a positive number to cap the total saved rows. Leave it blank or use
0for all available results. - Start the run, then open the dataset in Apify Console to inspect or export the rows.
Substack custom domains are supported. LinkedIn newsletter collection covers only editions exposed on the public newsletter page. The Actor does not require a Substack or LinkedIn login or API key and does not include paid-only text.
⚙️ Input
Input fields
| Field | Type | What it does |
|---|---|---|
resultType | string | Required. Choose newsletters for newsletter details or issues for public article content and issue details. The form prefills newsletters; there is no schema default. |
findNewslettersBy | string | For newsletters, choose topic or newsletterUrls. Defaults to topic when omitted. Ignored for issues. |
topics | array of strings | Required for Newsletters by Topic. Enter exact published topic names, such as science or self improvement, with one phrase per entry. Names are case-sensitive and can change. Free-form keywords, aliases, and spelling corrections are not supported. The form prefills science; there is no schema default. Other choices ignore this field. |
urls | array of objects or strings | Required for Newsletters by Newsletter URLs and for Issues. Enter complete https:// URLs. The form uses objects with a url field; plain URL strings are also accepted. Topic lookup ignores this field. No default or prefill. |
urls[].url | string | A Substack publication URL, including a custom domain, or a LinkedIn newsletter URL. For Issues, a direct Substack post or LinkedIn /pulse/ issue URL is also accepted. |
publishedAfter | string | Optional UTC date in YYYY-MM-DD form. For Substack Issues, keep posts published strictly after midnight at the start of this date. Applies to archives and direct posts. Blank means all dates. Does not filter LinkedIn editions and is ignored for Newsletters. No default. |
maxItems | integer | Optional total row limit across all submitted values, for either result type. Use a whole number of 0 or more. Omitted or 0 means all available results. The form prefills 10; this is not a schema default. No schema upper bound. A run may return fewer rows than requested. |
Only fields for the chosen result type and discovery choice are used. Each run uses one result type. A list of topics or a list of supported URLs can be processed in one run.
Successful default input
This is the public input from a successful run of the current beta build.
{"maxItems": 10,"resultType": "newsletters","findNewslettersBy": "topic","topics": ["science"]}
🧾 Output
Output fields
Each saved row is one newsletter or one issue. Optional fields depend on what the public page provides. The two row shapes use the tables below.
Newsletter rows
| Field | Type | What it does |
|---|---|---|
resultType | string | Always newsletter. |
url | string | Public newsletter URL. |
title | string | Newsletter name. |
platform | string | Stated publishing platform, when known. |
description | string | Newsletter description. |
topics | array of strings | Published topics and categories. |
imageUrl | string | Cover or logo image URL. |
websiteUrl | string | Newsletter website URL. |
signupUrl | string | Public signup page URL. |
pricingModel | string | Stated free or paid pricing model. An unknown model can be absent. |
frequency | string | Stated sending or publication frequency. |
subscriberCount | string | Public subscriber statement, including qualifiers such as “over.” |
createdAt | string | Publication creation date stated by the platform. |
authors | array of objects | Public newsletter authors or creators. |
authors[].name | string | Author name. |
authors[].url | string | Author profile URL. |
authors[].id | string | Platform author ID. |
authors[].biography | string | Public author biography. |
authors[].imageUrl | string | Author image URL. |
authors[].followerCount | number | Public author follower count. |
authors[].emails | array of strings | Public author contact email addresses, when available. |
authors[].socialLinks | array of strings | Public author social profile URLs. |
authors[].accountAttributes | array of objects | Account attributes stated by Substack. |
authors[].accountAttributes[].name | string | Attribute name. |
authors[].accountAttributes[].value | string | Stated attribute value, including values such as false. |
subscriptionOfferings | array of objects | Stated subscription offerings. These describe the newsletter, not Actor charges. |
subscriptionOfferings[].name | string | Offering name. |
subscriptionOfferings[].price | string | Stated price, currency, and billing period. Prices can be expressed in minor currency units. |
subscriptionOfferings[].description | string | Stated offering details and benefits. |
Genuine newsletter row
This complete row came from a successful current-beta run. Its subscription prices and subscriber count are saved page values, not current offers or Actor prices.
{"resultType": "newsletter","platform": "Substack","url": "https://www.lennysnewsletter.com","title": "Lenny's Newsletter","description": "Deeply researched product, growth, and career advice for product leaders, founders, and ambitious builders.\n","createdAt": "2019-06-01T15:35:37.885Z","imageUrl": "https://substackcdn.com/image/fetch/$s_!8MSN!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F441213db-4824-4e48-9d28-a3a18952cbfc_592x592.png","authors": [{"id": "1849774","name": "Lenny Rachitsky","url": "https://substack.com/@lenny","biography": "Writing • Angel investing • Advising","imageUrl": "https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/afba5161-65bb-4d99-8d6b-cce660917fa1_1540x1540.png","followerCount": 1386994,"emails": [],"socialLinks": ["https://x.com/lennysan","https://tiktok.com/@lennyrachtsky","https://www.youtube.com/c/LennysPodcast"],"accountAttributes": [{"name": "profile_disabled","value": "false"}]},{"id": "3667529","name": "Kiyani","url": "https://substack.com/@kiyani","biography": "Student of products. I write to learn, share and meet kindred spirits ✨. ","imageUrl": "https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/48e9d3e5-91eb-41be-9701-420b01f6585f_313x321.jpeg","followerCount": 2060,"emails": [],"socialLinks": ["https://x.com/KiyaniBba"],"accountAttributes": [{"name": "profile_disabled","value": "false"}]}],"subscriptionOfferings": [{"name": "Free","description": "Occasional free newsletter posts on product, growth, and career"},{"name": "Monthly","price": "USD 2000 minor units / 1 month","description": "Full archive: 500+ newsletter posts, podcast transcripts & key takeaways\nPrivate Slack with 30K+ PMs, founders & leaders + local meetups, AMAs & mentorship\nProduct Pass access: Free 20+ premium AI and product tools ($30,000+ in value)"},{"name": "Annual","price": "USD 20000 minor units / 1 year","description": "Full archive: 500+ newsletter posts, podcast transcripts & key takeaways\nPrivate Slack with 30K+ PMs, founders & leaders + local meetups, AMAs & mentorship\nProduct Pass access: Free 20+ premium AI and product tools ($30,000+ in value)"},{"name": "Insider Tier","price": "USD 40000 minor units / 1 year","description": "Full archive: 500+ newsletter posts, podcast transcripts & key takeaways\nPrivate Slack with 30K+ PMs, founders & leaders + local meetups, AMAs & mentorship\nProduct Pass access: Free 20+ premium AI and product tools ($30,000+ in value)\nEverything in Annual, plus priority access to every new Product Pass tool + Insider-only exclusives"}],"pricingModel": "Paid subscriptions available","subscriberCount": "Over 1,200,000 subscribers","websiteUrl": "https://www.lennysnewsletter.com","signupUrl": "https://www.lennysnewsletter.com/subscribe"}
Issue rows
Substack and LinkedIn issues share this row shape. Substack includes all three content formats. The schema requires readable text for every issue; other values are present when available.
| Field | Type | What it does |
|---|---|---|
resultType | string | Always issue. |
platform | string | Substack or LinkedIn. |
url | string | Public issue URL. |
title | string | Issue title. |
newsletterUrl | string | Parent newsletter URL, when stated. |
subtitle | string | Issue subtitle. |
publishedAt | string | Stated publication date and time. |
modifiedAt | string | Stated modification date and time. |
excerpt | string | Stated excerpt or content preview. |
topics | array of strings | Stated Substack post tags and categories. |
language | string | Stated Substack post language. |
access | string | Stated Substack paid-access information, such as everyone. |
authors | array of objects | Public issue authors. Substack uses the issue's byline authors, which can differ from newsletter contributors. |
authors[].name | string | Author name. |
authors[].url | string | Author profile URL. |
authors[].id | string | Platform author ID. |
authors[].biography | string | Public author biography. |
authors[].imageUrl | string | Author image URL. |
authors[].followerCount | number | Public author follower count. |
authors[].emails | array of strings | Public author contact email addresses, when available. |
authors[].socialLinks | array of strings | Public author social profile URLs. |
authors[].accountAttributes | array of objects | Account attributes stated by Substack. |
authors[].accountAttributes[].name | string | Attribute name. |
authors[].accountAttributes[].value | string | Stated attribute value. |
content | object | Publicly readable issue content. Formats can differ in links, images, and layout. |
content.text | string | Readable issue text. |
content.html | string | Public issue content in HTML. |
content.markdown | string | Public issue content in Markdown. |
images | array of objects | Public issue images. URLs link to image files; the Actor does not store image copies. |
images[].url | string | Direct image URL. |
images[].altText | string | Stated alternative text. |
images[].caption | string | Stated caption. |
images[].width | number | Image width in pixels. |
images[].height | number | Image height in pixels. |
engagement | object | Public engagement totals stated by the platform. |
engagement.likes | number | Stated Substack like total. |
engagement.reactions | number | Stated reaction total. |
engagement.comments | number | Stated comment total. |
Genuine issue row, shortened
This row came from a successful current-beta run. The large content object is replaced by "..." to keep the example short. In the dataset, it holds the public article body in text, HTML, and Markdown for this row.
{"resultType": "issue","platform": "LinkedIn","newsletterUrl": "https://www.linkedin.com/newsletters/ask-richard-6792750480419241984","url": "https://www.linkedin.com/pulse/whats-one-belief-you-had-unlearn-order-keep-growing-richard-branson-9gdzc","title": "What's one belief you had to unlearn in order to keep growing?","publishedAt": "2026-08-07T15:52:56.000+00:00","modifiedAt": "2026-08-07T15:53:25.000+00:00","excerpt": "What a fantastic question. Thank you for asking it, Jean.","authors": [{"name": "Richard Branson","url": "https://www.linkedin.com/in/rbranson","imageUrl": "https://media.licdn.com/dms/image/v2/C4D03AQHh6_Wth5f3rQ/profile-displayphoto-shrink_400_400/profile-displayphoto-shrink_400_400/0/1625181963183?e=2147483647&v=beta&t=zA3HEaoUjuU4RhgSNCrqX5NlSldv_di7CeIK7-iyjqI","followerCount": 18646717}],"content": "...","images": [{"url": "https://media.licdn.com/dms/image/v2/D5612AQG5DV-WqDJl8A/article-cover_image-shrink_720_1280/B56Z_c6JyTHcAQ-/0/1786117661308?e=2147483647&v=beta&t=VkzhNom3yM8LrKiZMK3MCkkDB_oiRRXUBF0RTaBeu1E","altText": "What's one belief you had to unlearn in order to keep growing?","caption": "","width": 1280,"height": 720},{"url": "https://media.licdn.com/dms/image/v2/D5612AQE-4M3KRKhUDg/article-inline_image-shrink_1000_1488/B56Z_c6_U6KEAI-/0/1786117879472?e=2147483647&v=beta&t=_Mq_1iA0sXIzR79yVOTm8G6IGrk28WCjpH8csJkVz1k","altText": "Article content","caption": "Me, and the team at Student","width": 800,"height": 512}],"engagement": {"reactions": 3870,"comments": 999}}
💳 Pricing
The Actor uses pay-per-event pricing. Newsletter scraped charges once for each saved newsletter. Newsletter issue charges once for each saved public issue. Both events have the same price for each Apify tier:
| Apify tier | Price per newsletter or issue |
|---|---|
| Free | $0.0002 |
| Bronze | $0.00015 |
| Silver | $0.00015 |
| Gold | $0.0001 |
| Platinum | $0.00005 |
| Diamond | $0.00005 |
There is no separate Actor event for setup, failed lookups, or empty searches. Only successfully saved rows incur these event charges. Repeated result URLs are saved and charged once per run. Check the Store pricing and your run charge limit before starting.
🔌 Integrations
Read and export the dataset in Apify Console, or fetch rows through the Apify API. Use Apify schedules for repeat runs and webhooks to notify your own workflow when a run finishes.
❓ FAQ
Why did my topic return no newsletters?
Topic lookup needs an exact published name. It does not accept general search phrases or fix spelling. For example, use science, not a misspelling or a longer search phrase. Topic names can change. A run can also return fewer rows when pages are unavailable.
Does LinkedIn collection include every past edition?
No. A newsletter URL collects only the edition links exposed on its public newsletter page. You can also submit a direct public LinkedIn issue URL. The Substack date filter does not apply to LinkedIn editions.
Can I collect paid-only content or private subscriber lists?
No. The Actor collects public newsletter data and readable issue content. It does not include text behind paid access restrictions, private subscriber identities, or private analytics. Public subscriber statements and author follower counts may be available.
Does the date filter include the chosen day?
For Substack Issues, publishedAfter uses a strict timestamp comparison with midnight UTC at the start of the chosen date. A post later that day qualifies; a post exactly at that midnight does not. It applies to direct posts and archives.
What happens when the same newsletter or issue appears twice?
The Actor saves the first eligible row for a result URL and skips later rows with that same URL in the run. It does not combine fields from those later matches. The limit counts saved rows across all submitted values.
What if one lookup fails?
The Actor can keep valid rows while other lookups fail. Missing optional data stays absent or empty. A technical failure that prevents all requested data from being read can fail the run. A successful run with no matching data can have an empty dataset.
Can I collect Beehiiv or Ghost article archives?
This Actor can discover newsletter details across platforms by topic. URL-based newsletter and issue collection supports Substack and LinkedIn. Use a separate platform Actor for Beehiiv or other article archives.
Is this an open-source newsletter scraper I run on my computer?
This page describes the hosted Apify Actor. Run it in Apify Console or call it through the Apify API. It does not promise a separate open-source package or local setup.
📝 Changelog
v0.0 (29-10-2026)
- Initial release.
🆘 Support
For issues, questions, or feature requests, file a ticket and I'll fix or implement it in less than 24h 🫡
🔗 Related Actors
- Substack API Scraper: Posts, Authors & Newsletters collects public Substack posts, publication details, and comments for deeper Substack research.
- Beehiiv Newsletter Scraper collects public Beehiiv newsletter profiles, posts, and content.
- Buttondown Newsletter Scraper reads public Buttondown newsletter profiles and archive posts.
- Substack Recommendations maps public recommendation links between newsletters.
- RSS Feed Reader collects titles, dates, authors, and content from known public newsletter or blog feeds.
Made with ❤️ by Maxime Dupré