I build small, narrow Apify actors — each one wraps a single official API or data source and does one job well, rather than trying to be a general-purpose scraper. Here are three recent ones, each solving a different, specific problem.
Docker Hub Image Tracker
Docker Hub will repush a tag with a new digest, new architectures, or a different underlying image, and the version string stays the same. This actor hits hub.docker.com/v2/repositories directly and tells you what actually changed for a given repository within a time window — digest, size, supported architectures, last-pushed/last-pulled timestamps.
{ "repository": "postgres", "daysBack": 7, "maxResults": 50 }
Real gotcha from building it: the API's ordering param is backwards from the usual REST convention — ordering=last_updated sorts newest-first, and you need a - prefix to get oldest-first.
apify.com/m_ctim/docker-hub-image-tracker · source
Website Lead Extractor
Built on Crawlee's plain CheerioCrawler instead of a headless browser. Point it at a domain, it crawls within that domain up to a set depth, and pulls every email, phone number, and social profile link (LinkedIn, X, Facebook, Instagram, GitHub) it finds in the raw HTML — no Chromium, no render wait.
{ "startUrls": [{ "url": "https://example.com" }], "maxDepth": 1, "maxPagesPerDomain": 20 }
Tradeoff worth stating plainly: it only sees what's in the initial HTML response, so a client-side-only React SPA with no SSR needs a browser-based crawler instead. For the common case of a static or server-rendered marketing site, it's faster and has nothing to configure around headless-browser flakiness.
apify.com/m_ctim/website-lead-extractor · source
Insider Trading Alert
Every SEC Form 4 filing (executive/director/10%-owner stock buys and sells) is public, structured XML, filed within a couple of business days of the transaction. This actor reads EDGAR's filing feed and each filing's own XML directly — search one ticker or scan the market-wide feed of the newest filings.
{ "ticker": "AAPL", "transactionType": "disposed", "minTransactionValue": 100000 }
Real bug from building it: the boolean "is this person an officer/director" flags get encoded as 1/0 by some filers' software and true/absent by others, on the same form type. A naive === '1' check silently returned false for real officers depending on which software generated the filing.
apify.com/m_ctim/insider-trading-alert · source
All three are pay-per-event on Apify (no subscription), no proxy, and read directly from each source's own official API rather than scraping rendered pages.
Top comments (0)