Cross-platform OSINT Seed-list Monitor
Pricing
Pay per event
Cross-platform OSINT Seed-list Monitor
Monitor public Telegram, RSS, and web seed lists. Export normalized OSINT evidence records with source URLs, content hashes, and deltas.
Pricing
Pay per event
Rating
0.0
(0)
Developer
Stas Persiianenko
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Turn a seed list of public accounts, URLs, and feeds into a normalized OSINT evidence dataset.
This actor is built for repeatable public-source monitoring inspired by election-disinformation workflows: analysts start with known entities, refresh public records, preserve source URLs, and compare what is new between runs.
What does Cross-platform OSINT Seed-list Monitor do?
Cross-platform OSINT Seed-list Monitor collects public records from conservative no-login sources and outputs one consistent evidence schema.
It currently supports:
- ๐ฐ๏ธ Telegram public channel preview pages
- ๐ฐ RSS and Atom feeds
- ๐ Public web pages and articles
- ๐ Run-to-run content hash deltas
- ๐ Keyword annotations for analyst triage
Who is it for?
This actor is useful for teams that need repeatable public evidence collection, not a one-off scrape.
- ๐ณ๏ธ Election integrity and civil-society monitoring teams
- ๐งโ๐ป OSINT researchers and investigative journalists
- ๐ก๏ธ Risk intelligence and trust-and-safety analysts
- ๐ Academic researchers studying narratives over time
- ๐ Agencies building briefing datasets from public sources
Why use this monitor?
Single-platform scrapers are useful when you already know the exact source. Influence and disinformation investigations usually start with a mixed watchlist: Telegram channels, source domains, campaign pages, RSS feeds, and keywords.
This actor keeps that workflow in one place:
- one input seed list
- one dataset schema
- one content hash per evidence record
- one
runDeltafield for scheduled monitoring - one export that downstream tools can join, filter, and audit
What sources are supported in v1?
V1 is intentionally conservative.
It focuses on public, no-login HTTP sources that are reliable enough for scheduled actor runs:
telegramโ publict.me/s/<channel>previewsrssโ RSS and Atom feed itemswebโ page-level public web/article extraction
What is not included yet?
The actor does not log in to X, Facebook, TikTok, Instagram, VK, or private Telegram groups.
Those platforms can be added later through delegated Apify actors when a buyer wants that exact workflow. This keeps v1 reliable and avoids brittle login or CAPTCHA-heavy paths.
Data you can extract
| Field | Description |
|---|---|
source | telegram, rss, or web |
sourceUrl | Direct URL for the public evidence record |
seed | Original seed value from your watchlist |
seedLabel | Optional human label for the seed |
matchedEntity | Telegram channel or domain |
recordType | Telegram message, RSS item, or web page |
publishedAt | Source timestamp when available |
scrapedAt | Collection timestamp |
title | Page or feed title when available |
text | Extracted evidence text |
authorName | Source author/channel when available |
mediaUrls | Public media URLs found on the record |
outlinks | Links found in the evidence |
engagement | Views or similar public metrics when exposed |
contentHash | SHA-256 hash for dedupe and deltas |
runDelta | new or seen across scheduled runs |
matchedKeywords | Keywords found in the record text |
How much does it cost to monitor OSINT seed lists?
The actor uses pay-per-event pricing.
You pay a small start fee for each run and a per-record fee for each normalized evidence record saved to the dataset. Current configured prices are:
| Event | Free plan tier | Bronze tier | Notes |
|---|---|---|---|
| Run started | $0.005000 | $0.005000 | Charged once per run |
| Evidence record | $0.000035858 | $0.000031181 | Charged for each normalized dataset item |
Approximate run-cost examples before Apify platform credits or subscriptions:
| Example run | Items saved | Free plan tier estimate | Bronze tier estimate |
|---|---|---|---|
| Smoke test | 20 | ~$0.00572 | ~$0.00562 |
| Small watchlist | 50 | ~$0.00679 | ~$0.00656 |
| Realistic v1 validation | 120 | ~$0.00930 | ~$0.00874 |
| Larger scheduled refresh | 1,000 | ~$0.04086 | ~$0.03618 |
Free-plan users still see the FREE tier event price above; Apify may apply any platform credits or free usage allowance in your account separately. Start with low limits so you can estimate the number of records your sources produce:
- 1-3 seeds
- 20-50 records per seed
- 1-3 Telegram pages per seed
Then increase limits for scheduled monitoring once you know the sources are relevant.
Quick start
- Open the actor on Apify.
- Add Telegram channels, RSS feeds, or public URLs to
seeds. - Choose source types:
telegram,rss, and/orweb. - Set
maxRecordsPerSeed. - Optionally add
matchKeywords. - Run the actor.
- Export the dataset as JSON, CSV, Excel, or via API.
Example input
{"seeds": [{ "value": "telegram", "label": "Telegram News", "type": "telegramChannel" },{ "value": "https://blog.apify.com/rss/", "label": "Apify Blog RSS", "type": "url" },{ "value": "https://blog.apify.com/qriton-election-disinformation-analysis/", "label": "Qriton case study", "type": "url" }],"sourceTypes": ["telegram", "rss", "web"],"maxRecordsPerSeed": 50,"maxPagesPerSeed": 3,"matchKeywords": ["election", "disinformation", "OSINT"],"includeRunDeltas": true}
Example output
{"source": "telegram","sourceUrl": "https://t.me/telegram/450","seed": "telegram","seedLabel": "Telegram News","matchedEntity": "telegram","recordType": "telegram_message","publishedAt": "2024-01-01T12:00:00+00:00","scrapedAt": "2026-07-08T15:00:00.000Z","text": "Public message text...","authorName": "telegram","outlinks": ["https://example.com"],"engagement": { "views": 12345 },"contentHash": "...","runDelta": "new","matchedKeywords": ["election"]}
Telegram monitoring tips
Use public channel handles such as telegram or durov, or full URLs like https://t.me/s/telegram.
Private channels, groups, and login-only content are not supported.
Increase maxPagesPerSeed to collect more history. Each public Telegram preview page usually contains up to 20 messages.
RSS monitoring tips
RSS and Atom feeds work well for newsrooms, blogs, agency updates, and public advisories.
If a URL is not a feed, the actor will skip RSS parsing and can still process the same URL through the web source type.
Web page monitoring tips
The web collector saves one page-level evidence record per URL.
It is best for canonical pages, articles, reports, and landing pages. It is not a deep crawler. Add RSS feeds when you need many items from one publication.
Run-to-run deltas
When includeRunDeltas is enabled, the actor stores content hashes in the run key-value store.
Records are marked:
newโ hash was not seen in previous runs using the same default key-value storeseenโ hash already existed from an earlier run
This is useful for scheduled watchlists.
Keyword matching
matchKeywords annotates records but does not filter them out.
That design preserves the full evidence trail while still making analyst triage easier.
For strict filtering, filter the dataset after export or in your downstream workflow.
Integrations
You can connect the dataset to:
- Google Sheets for analyst review
- Slack or email alerts for
runDelta = new - vector databases for narrative clustering
- BI dashboards for source counts over time
- case management tools for evidence preservation
API usage with Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('automation-lab/cross-platform-osint-seed-list-monitor').call({seeds: [{ value: 'telegram', type: 'telegramChannel' }],sourceTypes: ['telegram'],maxRecordsPerSeed: 25,});console.log(run.defaultDatasetId);
API usage with Python
from apify_client import ApifyClientimport osclient = ApifyClient(os.environ['APIFY_TOKEN'])run = client.actor('automation-lab/cross-platform-osint-seed-list-monitor').call(run_input={'seeds': [{'value': 'telegram', 'type': 'telegramChannel'}],'sourceTypes': ['telegram'],'maxRecordsPerSeed': 25,})print(run['defaultDatasetId'])
API usage with cURL
curl -X POST "https://api.apify.com/v2/acts/automation-lab~cross-platform-osint-seed-list-monitor/runs?token=$APIFY_TOKEN" \-H 'Content-Type: application/json' \-d '{"seeds":[{"value":"telegram","type":"telegramChannel"}],"sourceTypes":["telegram"],"maxRecordsPerSeed":25}'
MCP usage
Use Apify MCP with Claude Desktop or Claude Code:
https://mcp.apify.com/?tools=automation-lab/cross-platform-osint-seed-list-monitor
Claude Code setup:
$claude mcp add apify-osint-monitor https://mcp.apify.com/?tools=automation-lab/cross-platform-osint-seed-list-monitor
Claude Desktop JSON config example:
{"mcpServers": {"apify-osint-monitor": {"url": "https://mcp.apify.com/?tools=automation-lab/cross-platform-osint-seed-list-monitor"}}}
Example prompts:
- "Run the OSINT seed-list monitor for these Telegram channels and summarize new records."
- "Export all
runDelta = newrecords from the latest dataset." - "Compare keyword matches across RSS and Telegram records."
Scheduling workflows
Schedule the actor hourly, daily, or weekly depending on source volatility.
For election or crisis monitoring, use smaller but more frequent runs. For background research, use daily or weekly runs with higher limits.
Evidence quality notes
The actor records public source URLs and content hashes to support repeatable evidence handling.
It does not guarantee that a source page will remain online. Export datasets or store snapshots if long-term preservation is required.
Legality
Only collect public data that you are allowed to process.
Legal and ethical use
Only collect public data that you are allowed to process.
Respect platform terms, privacy rights, and local laws. Do not use this actor for doxxing, harassment, or unauthorized surveillance.
Troubleshooting
If you get few Telegram records, confirm that the channel is public and available at https://t.me/s/<channel>.
If an RSS seed returns no items, check that the URL is a real RSS or Atom feed. Try enabling web for page-level extraction.
If all records are marked seen, clear the default key-value store or disable includeRunDeltas for a fresh baseline.
FAQ
Can it monitor X, TikTok, Facebook, or VK?
Not directly in v1. Those platforms are better handled through dedicated Apify actors or future delegated-source integrations.
Does it require proxies?
No proxy is required for the current public no-login collectors.
Can I use keywords as seeds?
Keyword seeds are accepted for workflow compatibility, but v1 collectors focus on handles and URLs. Use matchKeywords to annotate collected records.
Does it remove duplicate records?
It deduplicates by content hash within a run and stores hashes for cross-run new/seen deltas.
Related scrapers
Useful automation-lab actors for future delegated workflows:
- https://apify.com/automation-lab/telegram-scraper
- https://apify.com/automation-lab/twitter-x-scraper
- https://apify.com/automation-lab/tiktok-search-scraper
- https://apify.com/automation-lab/facebook-pages-scraper
- https://apify.com/automation-lab/youtube-scraper
Changelog
0.1
Initial version with Telegram public previews, RSS/Atom feeds, public web pages, normalized evidence records, content hashes, and run-to-run deltas.