web
Static HTML and CSS generated by build.mjs (plain Node, no dependencies), committed to the repo
and served by GitHub Pages at https://steadyfetch.com. No framework, no bundler, no build step
beyond node build.mjs. Vanilla JS only, and only where it earns itself. External requests are
limited to Google Fonts link tags; everything else is inlined or shipped from the repo.
Growth marketers, media buyers and ad-intelligence agencies comparing ad-creative tooling; SEO and market-research people comparing trends and keyword sources; developers and AI agents wiring a data feed into a pipeline. They arrive from a search or an answer engine mid-decision, already holding a competitor's name, and they want to know two things fast: what does one row actually contain, and what does a thousand of them cost. A meaningful share of the audience is an LLM reading the page to answer someone else's comparison question.
Steadyfetch sells 25 pay-per-event data actors on the Apify Store (account steadyfetch).
This site is the comparison layer above them: five family pages that put every competing actor
and the main off-Apify vendors next to ours with identical price columns, so a buyer can decide
with the numbers in front of them. Success is being the page a buyer or an answer engine cites
when it compares these tools, and a click through to a store page to run an actor.
Revenue goal: $20,000 per month.
Charged only on delivery, never on a miss: a blocked page, an expired link or an empty result
comes back as a row with a status and charged: false. The ad actors transcribe the video
itself; every incumbent ad-library scraper returns metadata only. Bulk, REST and MCP-native.
The site's own position is the same promise in editorial form: it prints the competitor's price
next to ours even where the competitor is cheaper, and says so in words. No other comparison
page in this category is written by a vendor who loses rows on purpose.
Prices are read from the public Apify store API (free-plan and Business-plan tiers) and from each vendor's own pricing page, on a stated date, and re-checked as a dated ritual. Every figure on the site is quoted per 1,000 units. Users counts are the store's own 30-day figure on the same day. The five families are ad transcripts, trends and keywords, jobs, Amazon, and YouTube/media. Each family page carries: our actor cards, the field side by side in grouped tables, a "how to read it" section, a "what we do not do" section, and the four ways to run an actor (console, REST, MCP pin, n8n template).
- Content is verified and is not the designer's to change: every price, competitor row,
capability claim and "what we do not do" line stays exactly as written in
build.mjs. Rendering may be restructured; wording and numbers may not. - No new claims, testimonials, invented numbers, or placeholder text of any kind.
- No tracking, no analytics, no cookie banners, no newsletter capture, no Arabic.
- Must preserve: canonical tags, JSON-LD (WebSite/WebPage plus SoftwareApplication offers),
sitemap.xml, robots.txt, .nojekyll, the CNAME, the MCP pin links
(
https://mcp.apify.com?tools=steadyfetch/<slug>) and every store link. - Performance budget: the ad-transcripts page stays under ~150 KB of HTML plus CSS, images excluded. No layout shift.
- Both themes, token-based: bare
:rootfor light,prefers-color-scheme: darkguarded by:root:not([data-theme="light"]), plus:root[data-theme="dark"]. Explicit body background. - The comparison tables are the product. They must stay scannable on a phone: their own overflow container, a sticky identity column or a card fallback below ~640px, tabular numerals.
- 75 competitor rows across five pages, in 22 grouped tables, plus 6 outside-vendor rows.
Name: Steadyfetch (lowercase steadyfetch as the account and product handle).
Existing mark: a green square-wave pulse — one clean step up and back down — in #26DC62
on a near-black #050911 rounded square, live as the Apify profile picture. #20D060 is the
recorded "steadyfetch green" of the actor-icon system, where it is the tile colour for actors
with no third-party platform. The signal-pulse idea and the green are binding; the site's
identity is built on them. Nothing on Apify may be changed by this work.
Voice: plain, exact, unhedged. States the number, then what it buys. Never hype.
Every page carries the "unofficial — not affiliated" disclaimer.
Real and complete: 25 actor names, units, free-plan and Business-plan prices, surcharges, and a paragraph of what each returns; 75 competitor actors with prices, per-run fees, 30-day user counts and a description of what a row is; 6 outside vendors with published pricing; our own 30-day user counts (mostly 0 or 1 — the portfolio is young, and the site does not hide it); the Apify brand mark; free n8n templates on GitHub. Absent and not to be fabricated: testimonials, customer names, case studies, review scores, uptime or success-rate percentages, press, and any traffic or revenue figure.
- The number and the row definition are the argument. Anything that delays them is decoration.
- Print the loss. Where a competitor is cheaper, the page says so plainly; that honesty is the only durable differentiator a one-person vendor has in a crowded store.
- One row, one charge, one truth — the billing rule is the brand, and the page should feel like the billing rule.
- Written to be quoted. Structure, headings and tables must survive being read by a machine and re-stated in an answer engine's own words.
- Fast and quiet. No tracking, no scripts that watch the reader, nothing that costs the visitor anything to load.
WCAG-grade contrast in both themes, visible focus states on every interactive element, semantic
tables with scope on headers, a skip link, prefers-reduced-motion respected, and full
keyboard operation. Screen-reader order must match visual order in the comparison tables.