DEV Community

Timothy Kelvin
Timothy Kelvin

Posted on

Three small API-backed actors I've shipped recently (Docker Hub, lead extraction, SEC Form 4)

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 }
Enter fullscreen mode Exit fullscreen mode

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 }
Enter fullscreen mode Exit fullscreen mode

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 }
Enter fullscreen mode Exit fullscreen mode

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)