# Shipping fetcher.sh in thirty minutes, for $0

2026-06-18

> How fetcher.sh went from idea to a live URL in about half an hour, at a cash cost of zero — and why the first paid GET is the real launch.

- Index: https://fetcher.sh/blog.md
- This page (HTML): https://fetcher.sh/blog/shipping-fetcher-in-thirty-minutes

![A gold iPhone displaying the Twitter logo](https://images.unsplash.com/photo-1551817958-d9d86fb29431?auto=format&fit=crop&w=1600&q=80)

Photo by [Sara Kurfess](https://unsplash.com/photos/gold-apple-iphone-6s-displaying-twitter-logo-8Klz66m11hU?utm_source=fetcher_sh&utm_medium=referral) on [Unsplash](https://unsplash.com/?utm_source=fetcher_sh&utm_medium=referral).

[fetcher.sh](/) is what happens when web data is a product instead of a permission. Tweets, videos, listings, headlines — the official APIs price most of that out of reach, or hide it behind an account. We shipped a marketplace you could actually open: a directory, docs, a top-up page, and a host per service. The clock on that launch was about **thirty minutes**. The cash cost was **$0**.

The contract is the call. x402 or a prepaid credit key, USDC, no account. [twitter.fetcher.sh](https://twitter.fetcher.sh) is its own API, not a path on the directory. Same for YouTube, TikTok, Instagram, Reddit, Google, Maps, News, Play, the App Store, and Yelp.

## Starting is the success

The failure mode is not a rough first endpoint. It is waiting for a perfect plan while the data is still locked behind an enterprise quote. Shipping fetcher.sh was a vote for a URL that exists. We price it per request, so an agent can search X without a monthly invoice.

That clock is the point. fetcher.sh was not a finished platform on day one. It was an MVP a stranger could try. The first successful `GET` is the proof, not a deck.

## A free stack — then a payable one

Nothing required a credit card to appear on the internet.

**Cloudflare** took the first five minutes: DNS, TLS, a CDN, and basic DDoS cover on the free tier. The host is the product name. `twitter.fetcher.sh/api/search` is the public URL; the directory at fetcher.sh lists it.

**Docs** took another five: a real API reference in the same sitting as the homepage. Live docs beat perfect docs. Human pages live at [/docs](/docs). The Markdown twin is `/docs.md`. The catalog cannot drift from the prices the proxy actually charges.

The marketing page came from AI site builders — [v0.dev](https://v0.dev) for one pass, [bolt.new](https://bolt.new) for another. The brief was a clean site for web data without the official price tag: speed, concurrency, pay per call. Not "we sell JSON." The pitch was the next agent-shaped app. fetcher.sh's pitch is **pay for the fetch**.

**Claude** filled the gaps while the site came up: debug, tool choice, a second opinion. We still write the settlement path by hand. A 402 has to be machine-readable or an agent cannot pay.

## The half hour

Rough split:

- Domain and Cloudflare — about five minutes
- The site, via the AI builders — about ten
- Docs — about five
- Clicking around and fixing the obvious gaps — about ten

That is how fetcher.sh got a homepage. The product is what you do once someone wants a tweet. Call [twitter.fetcher.sh](https://twitter.fetcher.sh) with no credential and the server answers **402 Payment Required**. Sign and retry, or send a `bby_live_` key from [/topup](/topup). The ceiling is your wallet, not a plan.

## Just start, then just call

There is no clean window where the calendar is empty and the API is finished. fetcher.sh shipped anyway. An MVP is allowed to be embarrassing if it returns data. You change it after it is real.

We put every service on its own host, price every path, and let agents pay per call. Start with a URL. Then fetch.

Try a Twitter search on [twitter.fetcher.sh](https://twitter.fetcher.sh), or read the [API documentation](/docs).
