Skip to the page

Integrations / API & cloud platforms

SpecStream for Convex

Ask for live web data from a Convex action and the rows land in your own tables as SpecStream finds them. Every value carries the page it came from, and your server code caps the price.

What you get

  • Rows your UI subscribes toThe component keeps quotes, lists, and rows in its own tables. Subscribe to listRows with usePaginatedQuery and watch the count climb while the list fills.
  • A directory that fills itselfStart a list per city or category from a Convex scheduled function and render the rows from your own tables. Reading a list again never stores a row twice.
  • An onComplete mutationYour mutation runs once when the list finishes, with the context you passed in. Email the person, mark the report ready, or flatten each row for a prompt.

Set it up

  1. Run npm install @specstream/convex, then add app.use(specstream) to convex/convex.config.ts with SPECSTREAM_API_KEY in the component env.
  2. Create a key under Agents & API in SpecStream, give it a spending limit, and set it with npx convex env set SPECSTREAM_API_KEY.
  3. Call specstream.findList from an action with your request, a row count, and maxPriceUsd, then subscribe to listRows with the listId it returns.

The full setup guide has every step, with what to do if something doesn’t arrive.

Related integrations

See all

Live web data, in Convex

Ask in your own words for companies, places, people, filings or anything else the web lists. You see the price before anything runs and pay only for the matches.