← Scobleizer News Pulse

Scobleizer News Pulse API

An open, read-only JSON API over Robert Scoble's hourly News Pulse digests, so anyone can build personalized news systems. It is free: no key, no sign-up. Plain static JSON files, CORS enabled (Access-Control-Allow-Origin: *), updated every hour.

Start at https://presto-ferry-g7bz.here.now/api/v1/index.json.

Endpoints

URLWhat it returns
/api/v1/index.jsonThis API description: endpoints, pulses, item schema.
/api/v1/pulses.jsonList of the 21 pulses with item counts, sections, last edition time and URLs.
/api/v1/pulses/<slug>.jsonAll stored items of one pulse (up to the newest 100), newest first. Example: /api/v1/pulses/top-20.json
/api/v1/latest.jsonItems of the newest edition of every pulse, one flat array, each item tagged with its pulse.
/api/v1/all.jsonThe latest 500 items across all pulses, newest first (fewer while history builds up).
/api/v1/sections.jsonMap of pulse slug to the section names seen in it.

Pulse slugs: top-20, ai-community, ai-companies, ai-industry, ai-influencers, ai-organizations, brain-neuroscience, creative-ai, crypto-web3, cybersecurity, developer-designer, general-tech, investor, pr-comms, quantum-computing, robotics, spatial-computing, tesla-ev, weather-climate, world-news, x-spacex-insiders.

Examples

curl -s https://presto-ferry-g7bz.here.now/api/v1/latest.json | jq '.items[:3]'
curl -s https://presto-ferry-g7bz.here.now/api/v1/pulses/top-20.json | jq -r '.items[] | "\(.rank). \(.title)"'
fetch("https://presto-ferry-g7bz.here.now/api/v1/pulses/robotics.json")
  .then(r => r.json())
  .then(d => d.items.slice(0, 5).forEach(i => console.log(i.title, i.url)));

Item schema

Every endpoint that returns stories uses this object inside an items array (each response also has apiVersion, generatedAt and count). Fields are stable within v1; new optional fields may be added.

FieldTypeMeaning
idstringStable id: first 16 hex chars of sha256(pulse slug + newline + guid). Same story in the same pulse keeps the same id.
pulsestringPulse slug, e.g. "robotics".
pulseNamestringHuman name of the pulse, e.g. "Robotics Pulse".
titlestringOur headline for the story (plain text).
urlstringMain X post for the story. (The Crypto "Market Watch" item has no post; its url is the site home page and its `also` holds the data source.)
synopsisstringOur short plain-text summary (no HTML). May be empty.
alsoarray of stringExtra related URLs from the "Also:" line; empty array when none.
sectionstring or nullSection heading inside the pulse. For Top 20 it is the name of the pulse the story came from.
publishedAtstring (ISO 8601 UTC)Time of the first edition (hourly digest) that contained the story.
firstSeenAtstring (ISO 8601 UTC) or nullWall-clock time our pipeline first ingested the story. null for items stored before this field was added.
editionAtstring (ISO 8601 UTC) or nullTime of the most recent edition that contained the story (the edition `rank` refers to). null if unknown.
rankinteger or nullPosition within that edition (1 = first). For Top 20 it is the number 1-20. null if unknown.

Update frequency

Files are regenerated hourly, about 20 minutes past the hour; generatedAt tells you when. Each pulse keeps its newest 100 items; all.json has the latest 500. Please poll no more than once an hour and use the id to de-duplicate.

Using it with RSS

The same content is available as RSS: all pulses or https://presto-ferry-g7bz.here.now/feeds/<slug>.xml per pulse. Use RSS for readers and JSON for your own code; items match one to one (the JSON url is the RSS item link).

Usage note

Content is only our own headlines and short synopses plus links to public X posts; no post text is copied. Use it freely; attribution ("Scobleizer News Pulse" with a link back) is appreciated. No tracking, no cookies.