Substack Notes Search and Author Monitor avatar

Substack Notes Search and Author Monitor

Pricing

Pay per event

Go to Apify Store
Substack Notes Search and Author Monitor

Substack Notes Search and Author Monitor

πŸ”Ž Search public Substack Notes and monitor author activity with stable IDs, text, timestamps, engagement counts, media, and outbound links.

Pricing

Pay per event

Rating

0.0

(0)

Developer

Stas Persiianenko

Stas Persiianenko

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

11 days ago

Last modified

Categories

Share

Search public Substack Notes, monitor authors, and export clean social-listening data without maintaining a crawler.

The Actor turns keyword searches and public author profiles into structured records containing Note text, stable IDs, author and publication details, timestamps, visible engagement, media, and outbound links.

Use it for repeatable brand monitoring, creator research, sponsorship discovery, and trend analysis.

What does this Substack Notes scraper do?

  • πŸ”Ž Searches public Notes by keyword or phrase.
  • πŸ‘€ Collects public Notes from author profile URLs.
  • πŸ“Š Captures visible likes, replies, and restacks.
  • πŸ”— Extracts media and outbound links.
  • πŸ•’ Supports date windows for incremental monitoring.
  • ♻️ Skips IDs you already processed.
  • 🧹 Deduplicates Notes across every input source.

It intentionally focuses on Notes, not newsletter posts or private feeds.

Who is it for?

PR and social-listening teams

Track mentions of brands, executives, products, competitors, and campaigns across Substack's public social layer.

Creator agencies and newsletter sponsors

Discover active voices, review recent commentary, and compare visible engagement before outreach.

Researchers and analysts

Create reproducible datasets of public discourse with stable IDs, timestamps, and source attribution.

Automation builders

Refresh monitors on a schedule and send new records to databases, Slack, Sheets, or data warehouses.

Why use this Actor?

Substack Notes are useful but difficult to monitor manually at scale.

Search pages change, feeds paginate, and repeated searches create duplicates.

This Actor handles normalization, pagination, filtering, and deduplication so workflows receive consistent JSON records.

Input

Provide one or both source types:

  • queries: keyword phrases such as artificial intelligence.
  • startUrls: public Notes search URLs or profiles such as https://substack.com/@ruben.

Optional monitoring controls:

  • maxItems: maximum unique Notes to save.
  • publishedAfter: inclusive ISO date/time lower bound.
  • publishedBefore: inclusive ISO date/time upper bound.
  • existingIds: stable Note IDs to skip.

Example keyword search input

{
"queries": ["artificial intelligence", "AI agents"],
"maxItems": 100,
"publishedAfter": "2026-01-01T00:00:00Z"
}

Example author monitor input

{
"startUrls": [{ "url": "https://substack.com/@ruben" }],
"maxItems": 50,
"existingIds": ["123456789"]
}

Output data

FieldMeaning
idStable Substack Note ID
urlCanonical public Note URL
textFull visible Note text
authorIdStable author profile ID
authorNameDisplay name
authorHandlePublic profile handle
authorProfileUrlPublic profile URL
publicationIdAssociated publication ID, when available
publicationNameAssociated publication name
publicationSubdomainPublication subdomain
publishedAtNote publication timestamp
editedAtEdit timestamp, when available
likesCountVisible reactions/likes
repliesCountVisible reply count
restacksCountVisible restack count
mediaUrlsAttached media URLs
outboundUrlsLinks found in Note content
inputQueryQuery that produced the record
sourceUrlSearch or profile source
scrapedAtExtraction timestamp

Unavailable engagement values remain null; the Actor does not invent zeros.

Example output

{
"id": "292375831",
"url": "https://substack.com/@ruben/note/c-292375831",
"text": "You're using Claude for only one thing...",
"authorId": "339636559",
"authorName": "Ruben Hassid",
"authorHandle": "ruben",
"publishedAt": "2026-07-11T16:00:00.905Z",
"likesCount": 40,
"repliesCount": 5,
"restacksCount": 8,
"mediaUrls": [],
"outboundUrls": [],
"inputQuery": null,
"sourceUrl": "https://substack.com/@ruben",
"scrapedAt": "2026-07-12T02:10:33.651Z"
}

How to scrape Substack Notes

  1. Open the Actor input page.
  2. Add keywords, search URLs, or author profile URLs.
  3. Choose a small maxItems for your first run.
  4. Optionally set date bounds or known IDs.
  5. Start the run.
  6. Export the dataset as JSON, CSV, Excel, XML, or RSS.

Incremental monitoring

Store the IDs from each completed run.

On the next run, send them through existingIds and set publishedAfter to the previous checkpoint.

This produces a clean stream of unseen Notes without post-processing duplicates.

Schedule the Actor hourly, daily, or weekly based on your monitoring needs.

Search tips

  • Use exact brand names for focused monitoring.
  • Add common misspellings as separate queries.
  • Search product names and executive names independently.
  • Use date bounds to keep recurring runs fast.
  • Keep IDs in a database for long-running monitors.
  • Start broad, inspect results, then narrow noisy phrases.

Deduplication

Records are deduplicated by stable Note ID across all inputs in a run.

IDs supplied through existingIds are also skipped.

The same Note found from two keywords is saved only once.

How much does it cost to monitor Substack Notes?

This Actor uses pay-per-event pricing.

A small start event covers run initialization, and an item event is charged for each Note saved.

Tier discounts reduce the per-Note price for larger Apify plans.

The Console shows the exact charge before and after each run.

Apify integrations

Connect completed datasets to:

  • Google Sheets for shared mention trackers.
  • Slack for new high-engagement Note alerts.
  • Zapier or Make for no-code routing.
  • Webhooks for immediate downstream processing.
  • BigQuery, Snowflake, or PostgreSQL for analysis.
  • Amazon S3 for archival datasets.

A useful pattern filters records by likesCount before notifying an outreach team.

API usage with JavaScript

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('automation-lab/substack-notes-search-author-monitor').call({
queries: ['AI agents'],
maxItems: 100,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Python API example

from apify_client import ApifyClient
client = ApifyClient('YOUR_APIFY_TOKEN')
run = client.actor('automation-lab/substack-notes-search-author-monitor').call(
run_input={'queries': ['AI agents'], 'maxItems': 100}
)
items = client.dataset(run['defaultDatasetId']).list_items().items
print(items)

cURL API example

curl -X POST \
"https://api.apify.com/v2/acts/automation-lab~substack-notes-search-author-monitor/runs?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"queries":["AI agents"],"maxItems":100}'

Use with Apify MCP

Connect Claude and other MCP clients through this actor-scoped endpoint:

https://mcp.apify.com?tools=automation-lab/substack-notes-search-author-monitor

For Claude Code, register the remote HTTP server directly:

claude mcp add --transport http apify-substack-notes \
"https://mcp.apify.com?tools=automation-lab/substack-notes-search-author-monitor"

For Claude Desktop, Cursor, or VS Code, add this server to the client's MCP JSON configuration (for example, mcp.json):

{
"mcpServers": {
"apify-substack-notes": {
"type": "http",
"url": "https://mcp.apify.com?tools=automation-lab/substack-notes-search-author-monitor"
}
}
}

Authenticate when the client opens the server, then try actor-specific prompts such as:

  • β€œFind recent Substack Notes mentioning our product.”
  • β€œMonitor this author and summarize Notes with more than 20 likes.”
  • β€œExport outbound links shared by these Substack creators.”

Data quality

The Actor returns public values exposed by Substack at run time.

Engagement can change after extraction.

Some Notes have no publication association, media, outbound links, or edit timestamp.

Fields are typed consistently and optional values are represented explicitly.

Reliability

Requests use browser-like headers and bounded retries.

Pagination stops at your item limit or the end of available public results.

Malformed or unsupported URLs fail with actionable messages rather than silent empty output.

Performance

The Actor uses lightweight HTTP requests rather than launching a browser.

A 256 MB container is sufficient for normal runs.

Large monitors should use focused queries and incremental date bounds.

Legality and responsible use

Only public Substack data is collected.

You are responsible for your use of the data and compliance with applicable law, privacy requirements, contracts, and platform terms.

Avoid collecting unnecessary personal information.

Do not use the Actor for harassment, spam, or invasive profiling.

Troubleshooting

Why did my query return fewer Notes than expected?

Substack controls public search relevance and availability. Try a broader phrase, remove a narrow date bound, or add related queries.

Why does a profile URL fail?

Use a public https://substack.com/@handle URL. Private, removed, malformed, or non-Substack URLs are unsupported.

Why are engagement fields null?

A null means Substack did not expose the visible count for that Note. It is different from a confirmed zero.

Why did my recurring run return no items?

Check whether existingIds already contains all matching Notes and whether publishedAfter is later than the newest available Note.

FAQ

Does it scrape newsletter posts?

No. The product is deliberately scoped to public Notes. Use a dedicated Substack posts scraper for newsletters.

Does it require a Substack login?

No. Supported inputs use public search and public profile data.

Can I monitor several authors?

Yes. Add multiple profile URLs and set a combined output limit.

Can I export CSV or Excel?

Yes. Every Apify dataset can be downloaded in CSV, Excel, JSON, XML, and other formats.

Can I schedule runs?

Yes. Use Apify schedules and webhooks to build recurring monitoring workflows.

Explore other public-data tools from automation-lab:

  • Substack post and publication tools for newsletter content.
  • Social media scrapers for cross-network mention monitoring.
  • Creator discovery actors for sponsorship research.

Support

Open an issue from the Actor page with a reproducible public URL, input, and run ID.

Do not include credentials or private data.

We use reproducible reports to keep extraction behavior stable as Substack evolves.