Building your own RSS ingest vs buying a data wire
Building an RSS ingest is a weekend to a first version and a permanent maintenance job after that. Each source sets its own rate policy, feeds move without notice, and dedupe across overlapping publishers is the part nobody budgets for. Buy when the feeds are not your product.
/mcp. Nothing here needs an API key or a signup.
The weekend version genuinely works. Fetch a feed, parse it, store the items, search them. Everything below is what happens between that Sunday evening and the first time an agent depends on the result.
The work list after the first version
- Per-source rate policy. These are not uniform and they are not guesses. The
arXiv terms of use state no more than one request every three seconds and a single connection at a time, across every machine under your control. Other sources publish their own ceilings, and some enforce them with blocks rather than error codes.
- Scheduling and backoff. Polling 40 feeds on one timer means 40 simultaneous
requests, some of which will time out. You need staggering, retries with backoff, and a rule for a feed that has failed for six hours.
- Feed rot. URLs move, get redirected, switch from RSS to Atom, or quietly
start returning HTML. A feed that returns 200 with an error page parses to zero items and looks exactly like a quiet news day.
- Conditional GET.
If-Modified-SinceandETaghandling, so a poll that
finds nothing new costs a 304 rather than a full document.
- Dedupe and normalisation. Four publishers cover the same story with four
titles and three timestamp formats. Without title normalisation and merge rules, an agent asking for "the last 10 items" gets the same event four times.
- Retention and indexing. Storing items is easy; answering a keyword query in
a few milliseconds across a rolling window is an index, and it needs building.
- Uptime. An agent calling at 3am does not care that your ingest box rebooted.
None of this is hard. All of it is ongoing, and it belongs to whoever wrote it.
The break-even, honestly stated
Compare against what your own time costs, because that is the only comparison that changes the answer.
| Own ingest | Bought wire | |
|---|---|---|
| Time to first result | A weekend | One HTTP call |
| Ongoing engineering | Hours per month, indefinitely | None |
| Hosting | A box or a function plus storage | None |
| Marginal cost per query | Effectively zero | $0.005 to $0.01 |
| Archive depth | Whatever you keep | The provider's window |
| Custom sources | Anything you can find a feed for | The provider's list |
The crossover is not about call volume the way a subscription comparison is. At $0.005 a call, 10,000 queries a month is $50, which is well under one engineering hour at most rates. The build case has to be made on control and archive depth, not on price, and it is often a fair case on those grounds. The volume-based version of this arithmetic, for choosing between pricing models rather than between build and buy, is in pay-per-call versus subscription pricing.
The three cases where building wins
- Feeds are your product. If ingest quality is the thing customers pay you
for, outsourcing it outsources your differentiation.
- You need sources nobody sells. A niche regulator, a trade publication, an
internal feed. No provider will carry it, so you carry it.
- You need archive depth. This is the real one. Wire providers keep windows,
not archives. This service retains 72 hours for news wires and 14 days for government and science wires, which answers "what happened recently" and does not answer "what happened in March". If your questions are historical, you have to hold the data yourself.
That third point is a limitation worth stating plainly rather than working around. An agent that needs "has this product ever been recalled" should not be pointed at a 14-day window, and a page that pretended otherwise would lose the reader the first time they checked.
The case for buying, in one line each
- Somebody else absorbs feed rot, rate policies and the 3am reboot.
- Sources arrive merged, deduped and indexed rather than as 40 XML documents.
- Per-call pricing means an unused month costs nothing.
- An agent can start using it mid-task, with no account to create.
# free preview, no wallet, no signup curl "https://thebotwire.com/oss/preview?q=postgres" # $0.005: one call replaces a poller, a parser and an index curl "https://thebotwire.com/oss/latest?q=postgres&since=7d&limit=10" # or run it as a local MCP server inside your agent npx botwire-mcp
Observed interval between ingest runs across this service was 299 seconds when this page was written, published live at /health alongside the wire count and last poll time. The token side of the same decision, which usually dominates the money side, is worked through in what a live data query costs an agent.
FAQ
How long does a usable RSS ingest actually take to build?
A single-feed fetch and search is an afternoon. A pipeline that polls dozens of feeds on staggered schedules, honours per-source rate limits, handles redirects and dead feeds, dedupes across overlapping publishers and serves keyword queries quickly is weeks, and it never fully stops needing attention.
Can I build the ingest and still buy for some sources?
Yes, and it is a sensible split. Hold the feeds that are specific to your product and buy the commodity ones. Nothing about either approach requires exclusivity, and per-call pricing means the bought half costs only what you use.
What breaks most often in a self-built ingest?
Feeds that change without notice. A URL that starts redirecting, a switch from RSS to Atom, or a server returning an HTML error page with a 200 status. All three parse to zero items and look identical to a quiet day, so the failure is silent unless you alert on a feed going quiet.
Does buying a wire mean giving up historical data?
For anything older than the provider's window, yes. Retention here is 72 hours on news wires and 14 days on government and science wires. If your agent asks historical questions, either archive the results of your own calls or ingest the source feeds yourself.
Sources
The per-source rate policy example comes from arXiv's API terms of use, which asks callers to make no more than one request every three seconds and to limit requests to a single connection at a time across all machines under their control. Retention windows, wire count and observed poll interval for this service are published at thebotwire.com/health.
Related: What is a pay-per-call API, and when is it cheaper than a subscription? · How much does it cost for an AI agent to query live data?