Public web pages, structured

Every source,
already parsed

We fetch finance, social, developer and media sources, line up the fields and drop the duplicates. Pull it into your own system over the JSON API: everything if you want it, only what's new if you pass a cursor. Same schema everywhere, so switching sources doesn't mean rewriting code.

150+ sources 5 min ingest JSON API Bearer auth
api.databridge.world
$ curl -s "https://api.databridge.world/v1/feeds/fin-cn-macro/items?limit=2" \
       -H "Authorization: Bearer dbw_live_••••"
// 200 OK · application/json
{
  "feed": "fin-cn-macro",
  "updated_at": "2026-11-04T09:12:40Z",
  "items": [
    {
      "id": "fin-cn-macro:9f21c8d4",
      "title": "央行公开市场操作:7 天逆回购 1320 亿元",
      "published_at": "2026-11-04T01:00:00Z",
      "lang": "zh",
      "hash": "9f21c8d4"
    },
    { /* ... */ }
  ],
  "next_cursor": null
}
150+live sources
4content domains
~5 minaverage ingest lag
JSONoutput format
Doing it yourself

It works for the first three sources

By the fifth, you're spending more time fixing parsers than building the product.

01

One redesign, and the parser is dead

A renamed field, one extra wrapper div, a list that became infinite scroll. The script that worked last night returns an empty array this morning.

02

Getting blocked is normal

User agents get banned, rates have to come down, captchas show up, exit IPs need rotating. None of it is ever finished.

03

Same bugs, twelve times

Dedupe, incremental fetch, timezones, encodings, nulls. Source twelve breaks in the same places as source one.

Ways to use it

One API, two directions

Pull when you need it, or let us push. Same token, same fields, same quota either way.

Pull

Ask for what you need

REST with Bearer auth, cursor paging, fixed fields. Full pull the first time, only new items after that.

api.databridge.world
GET /v1/feeds/{feed_id}/items
    ?since=2026-11-01T00:00:00Z
    &limit=100
    &cursor=eyJvIjoyNDB9

GET /v1/sources          # sources & status
GET /v1/feeds/{id}       # single source meta
  • Same field names on every source, so no per-source adapter
  • Cursor paging: page 200 costs the same as page 1
  • Quota and rate numbers ride in response headers, readable from code
Push

Skip the polling

Premium can point us at an endpoint. New items get POSTed there, signed, so you verify before you act on them.

your-app.example.com
# we send, you don't poll
POST /hooks/dbw
X-DBW-Signature: sha256=6b1f...e0
{
  "feed_id": "tech-github-releases",
  "items": [ { "id": "...", "title": "..." } ]
}
  • Signature is HMAC-SHA256, keyed with a secret you hold
  • Five retries, backing off from 10s to 160s
  • Delivery log in the console, failed ones can be replayed
Source catalog

Four domains, same fields

The domains differ. The fields don't, so you write the parser once.

Finance

38

Policy releases, exchange filings, market snapshots, earnings calendar

central banksfilingsearnings

Social

42

Trending lists, public feeds, forums, public channels, podcast updates

trendingRedditTelegram

Developer

46

Releases, trending repos, papers, changelogs, job boards

GitHubarXivHN

Media

31

Trade press, government notices, independent blogs, newsletters

trade pressnoticesblogs
What happens upstream

Anyone can turn HTML into XML. The rest is the work.

Dedupe, field alignment, timezones: done before an item reaches you.

A dozen fields, always

id, title, url, summary, published_at, lang, hash. The same on every source, so merging needs no adapter layer.

New items only

Cursors are position-based, not page numbers, so deep paging doesn't get slower.

One copy of each story

Ten outlets republish the same story; you get one. Matched on normalized URL plus a title fingerprint.

Edits leave a trace

If a source edits or retracts a post, the item keeps a revision number and a deleted flag. It stays in history.

You see breakage first

Every source reports its last fetch time and failure streak. Broken shows up as broken, before a user emails you.

Push instead of polling

Give us an endpoint. New items POST straight to it, signed so you can verify them.

Boundaries

Public content only

What we fetch
Pages reachable without logging in. We honor robots.txt and site terms, and keep request rates modest against every origin.
Hard limits
No paywall circumvention, no login bypass, no personal data harvesting. If a site owner asks us to stop, we drop that source within 24 hours.
Pricing

Free until you need more

No trial clock on the free tier. Upgrading changes three things: how many sources, how many calls a day, and how fast data lands. Endpoints stay the same.

Free

One or two sources, to see if the data holds up

$0/ forever
Start free
  • 3 feeds
  • 500 API calls per day
  • 30-minute ingest lag
  • Community support
Premium

Production, with push delivery and history

$18/ month
Start Premium
  • Unlimited feeds (fair use)
  • 200,000 API calls per day
  • 1-minute ingest lag
  • 90-day history
  • Webhook delivery
  • Priority for custom sources

Get one source working first

Two minutes after signup you have a token. Your first feed can be live today.