Live lead enrichment

Turn a raw domain into a qualified lead in one API call.

Firmographics, tech stack, funding, and ICP fit, pulled from the live web and structured to your schema. Enrich every inbound inside your own pipeline instead of stitching together five data vendors. The enrichment happens inside the call.

Live web on every call, no stale record cacheVerify any field against the source URL you passedStructured to a schema you definePrivate and ephemeral, never used to train a model
enrich.ts
import Tabstack, { APIError } from '@tabstack/sdk'

const client = new Tabstack()

// One domain in, a company profile out.
try {
  const company = await client.extract.json({
    url: 'https://acme.com',
    json_schema: {
      type: 'object',
      properties: {
        company_name: { type: 'string' },
        industry: { type: 'string' },
        headcount_range: { type: 'string' },
        hq_location: { type: 'string' },
        tech_stack: { type: 'array' },
        value_propositions: { type: 'array' },
        target_customers: { type: 'array' },
      },
    },
    effort: 'standard',
  })

  console.log(company) // structured, no parsing
} catch (err) {
  if (!(err instanceof APIError)) throw err
  console.error(err.status, err.message)
}

The old way

Lead enrichment means five vendors and stale records.

Every data provider covers a different slice, bills per record, and answers from a cache that's weeks old. You pay for coverage you don't use and still hit gaps on the accounts that matter, then reconcile conflicting fields by hand.

Stitched together

  • A different vendor for firmographics, tech stack, and funding
  • Conflicting fields you reconcile by hand

Stale & expensive

  • Per-record pricing whether the data is fresh or not
  • Cached records that are weeks behind the live site

/extract/json

Turn a company's site into structured firmographics.

Point /extract at a domain and define the JSON shape you want back: industry, headcount, HQ, tech stack, positioning. No parsing, no cleanup on JS-heavy pages, no scraper to maintain. One call returns schema-matched data you can write straight to your CRM.

Features

  • Schema-driven extraction, no parsing code
  • Firmographics, tech stack, and positioning in one call
  • Clean output from JS-heavy pages
  • geo_target for region-specific data
enrich.ts
TypeScript
import Tabstack, { APIError } from '@tabstack/sdk'

const client = new Tabstack()

// One domain in, a company profile out.
try {
  const company = await client.extract.json({
    url: 'https://acme.com',
    json_schema: {
      type: 'object',
      properties: {
        company_name: { type: 'string' },
        industry: { type: 'string' },
        headcount_range: { type: 'string' },
        hq_location: { type: 'string' },
        tech_stack: { type: 'array' },
        value_propositions: { type: 'array' },
        target_customers: { type: 'array' },
      },
    },
    effort: 'standard',
  })

  console.log(company) // structured, no parsing
} catch (err) {
  if (!(err instanceof APIError)) throw err
  console.error(err.status, err.message)
}
signals.ts
TypeScript
import Tabstack from '@tabstack/sdk'

const client = new Tabstack()

// Funding and buying signals, live web.
const stream = await client.agent.research({
  query: 'Latest funding and hiring at Acme?',
  mode: 'fast',
  nocache: true,
})

for await (const event of stream) {
  if (event.event === 'complete') {
    console.log(event.data.report) // cited
  }
  if (event.event === 'error') {
    console.error(event.data.error.message)
  }
}

/research

Pull funding, hiring, and buying signals from the live web.

Give /research a question about an account and it reads the live web, finds the sources, and returns a synthesized answer with a citation on every claim. Catch a funding round, a leadership hire, or a new product the day it happens, not the month a vendor refreshes its cache.

Features

  • Live-web, multi-source research in one call
  • Citations and source URLs on every claim
  • nocache to bypass the cache and refetch
  • Streams over SSE

/generate/json

Score ICP fit before a lead ever hits a rep.

Point /generate at the same domain with your scoring instructions and get back a structured fit score against your ICP. It reads the page and applies the instructions in one call. Route, tier, and prioritize every inbound automatically, so reps spend their time on the accounts that convert instead of qualifying by hand.

Features

  • Structured scoring against your own ICP
  • Tiering and routing you can automate
  • One credit currency with the rest of the pipeline
score.ts
TypeScript
import Tabstack, { APIError } from '@tabstack/sdk'

const client = new Tabstack()

// Read the site and score ICP fit in one call.
try {
  const fit = await client.generate.json({
    url: 'https://acme.com',
    instructions:
      'Score this company against our ICP: mid-market B2B SaaS. ' +
      'Return a 0-100 score, a tier, and a one-line rationale.',
    json_schema: {
      type: 'object',
      properties: {
        icp_fit_score: { type: 'number' },
        tier: { type: 'string' },
        rationale: { type: 'string' },
      },
    },
  })

  console.log(fit) // route the lead before it hits a rep
} catch (err) {
  if (!(err instanceof APIError)) throw err
  console.error(err.status, err.message)
}

Try it live

Enrich any domain from the live web.

Enter a company domain and watch a real, cited profile stream in. It runs three live Tabstack calls (/extract/json, /research, /generate/json) and caches the result in your browser.

Runs three live Tabstack calls (/extract/json, /research, /generate/json).

Own it vs. buy it

You are paying vendors for data you could pull yourself.

Enrichment data is public. A data vendor charges you per record for a cache on top of information that is live on the web right now. Build the enrichment step you actually need on a handful of calls, own it, and verify every field against the source.

Data vendors

  • Per-record fees whether you use the data or not
  • A cache you cannot inspect or verify
  • Coverage gaps on the accounts that matter most

Per-record billing

Build on Tabstack

owned
  • Usage-based credits across five endpoints
  • Build the enrichment step you need and own it
  • Open every source and verify the field yourself
usage-basedyou own it

Who builds on this

Teams that enrich leads without a data vendor.

Growth & data engineers

Enrichment in the pipeline, not five vendor integrations.

RevOps & sales teams

Every inbound scored and routed before a rep sees it.

Founders & investors

A live read on any account, no seat to buy.

Agents

Account context pulled fresh, mid-workflow.

Mozilla-backed

Privacy, Transparency, and Control

When you build on /research, your users' questions and the data behind every answer stay yours. Tabstack is a Mozilla-backed platform, and we handle live-web research responsibly, so you can ship features your users actually trust.

Private by default.Queries and retrieved pages are used to build your answer and support you, then purged. Never sold, never used to train models.

Verifiable by design.Every answer returns source URLs and inline citations, so you and your users can confirm exactly where each claim came from.

Yours to control.You set the mode, scope, and depth of every call. No retained corpus, no lock-in, just clean, cited data you own.

See exactly how we source and handle data in the documentation.

Mozilla Manifesto

Pricing & Plans

All prices in USD.

Free Trial

Every new account includes 10,000 free credits to explore the full platform.

Starter

$10/ month

100,000 credits included

  • Access to all API endpoints
  • Fast research mode
  • Standard rate limits
  • $0.30 / 1k credits overage

For tinkerers & hobbyists who want to simply connect their systems to the internet.

Get Started

Team

$99/ month

500,000 credits included

  • Everything in Starter, plus:
  • Fast + Balanced research modes
  • Increased rate limits
  • $0.30 / 1k credits overage

Low-latency, predictable cost automation so you can focus on your core product.

Get Started

Pro

$499/ month

3,000,000 credits included

  • Everything in Team, plus:
  • Highest rate limits
  • $0.25 / 1k credits overage

For teams deploying and managing production workloads efficiently at scale.

Get Started

Enterprise Plan

Need Custom Pricing?

Custom API quotas, dedicated support, and SLAs for high-volume teams.

Contact Sales

Cost per action

Every endpoint bills in credits. Extract and Generate are a single action per call. Automate and Research run a variable number of actions per task, so cost scales with the work they do.

  • Extract (Markdown)10 credits
  • Extract (JSON)50 credits
  • Generate100 credits
  • Automate100 credits
  • Research (Fast)250 credits
  • Research (Balanced)350 credits

Qualify an inbound before a rep opens it.

Start with 10,000 free credits, no card.