Skip to content

Sell my data

Say "sell renewal dates by county, a cent per lookup" and get a Dataset, an API with keys, a Meter and a monthly usage bill.

A Dataset sold as a product: customers query it through the API or an agent, and a Meter counts each lookup for the monthly bill.

Needs Startup

What you get

  • 1Dataset with its record count and last refreshDataset
  • 1Offer at a cent per lookup, billed monthlyOffer
  • 1Meter that counts lookups per customerMeter
  • 1API, SDK and MCP tool that query it, with keysInterface
  • 1Portal with keys, usage and downloadsPortal

Your agent does

Dataset.create → Offer.create → Offer.publish
You, to your agent

Sell renewal dates by county as data.

Charge a cent per record looked up.

Turn our records into a data product.

# 1. Dataset.create
curl -X POST https://api.sb/leaseline.app/datasets \
  -H "Authorization: Bearer $STARTUP_BUILDER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name":"Renewal dates by county","promise":"Every lease end date traces to its public filing, refreshed weekly."}'

# 2. Offer.create
OFFER=$(curl -X POST https://api.sb/leaseline.app/offers \
  -H "Authorization: Bearer $STARTUP_BUILDER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"price":{"amount":0.01,"currency":"USD"},"interval":"month","terms":"Billed monthly for the lookups made. Records may be used inside your own product, not resold as a list."}' | jq -r '.offer["$id"] | split("/") | last')

# 3. Offer.publish
curl -X POST https://api.sb/leaseline.app/offers/$OFFER/publish \
  -H "Authorization: Bearer $STARTUP_BUILDER_API_KEY"
import { $ } from 'startup-builder'

await $.Dataset.create({ name: 'Renewal dates by county', promise: 'Every lease end date traces to its public filing, refreshed weekly.' })
const offer = await $.Offer.create({ price: { amount: 0.01, currency: 'USD' }, interval: 'month', terms: 'Billed monthly for the lookups made. Records may be used inside your own product, not resold as a list.' })
await $.Offer.publish({ offer: offer.$id })
npx startup-builder do Dataset.create --json '{"name":"Renewal dates by county","promise":"Every lease end date traces to its public filing, refreshed weekly."}'
OFFER=$(npx startup-builder do Offer.create --json '{"price":{"amount":0.01,"currency":"USD"},"interval":"month","terms":"Billed monthly for the lookups made. Records may be used inside your own product, not resold as a list."}' | jq -r '.offer["$id"] | split("/") | last')
npx startup-builder do Offer.publish --json '{"offer":"'"$OFFER"'"}'
{
  "name": "do",
  "arguments": {
    "code": "await $.Dataset.create({ name: 'Renewal dates by county', promise: 'Every lease end date traces to its public filing, refreshed weekly.' })\nconst offer = await $.Offer.create({ price: { amount: 0.01, currency: 'USD' }, interval: 'month', terms: 'Billed monthly for the lookups made. Records may be used inside your own product, not resold as a list.' })\nreturn await $.Offer.publish({ offer: offer.$id })"
  }
}

Change it

  • Add a $99 monthly plan with 25,000 lookups.
  • Let people try 50 lookups free.
  • Export the whole dataset to a customer’s warehouse weekly.

Under the hood

Systems
Datasets, Billing
Nouns
Dataset, Offer, Meter
Events
Dataset.created, Offer.created, Offer.published
Stripe objects
Product, Price, Billing Meter