Guides

Leadpipe Intent API: 20,000 Topics, Person-Level

Find in-market buyers across 20,000+ B2B/B2C topics with person-level data. API walkthrough with endpoints, ICP filters, and code examples.

Nicolas Canal Nicolas Canal · · 12 min read
Leadpipe Intent API: 20,000 Topics, Person-Level

Most intent data providers tell you which companies are researching a topic. That’s it. A company name and a score. Your SDR gets to figure out which of the 200 employees actually cares.

Leadpipe’s Orbit API does something different. It tells you which people are researching topics - across 20,000+ B2B and B2C topics, filtered by your exact ICP, with person-level contact data attached. Name, email, company, job title, phone, LinkedIn, and the specific topics they’re actively researching, scored 1-100.

And it’s accessible via API. Not locked behind a $50K/year enterprise dashboard with a six-week onboarding. Not gated behind a “talk to sales” wall. A RESTful API with 18 endpoints, API key auth, and rate limits designed for production use.

This post is a complete walkthrough: every endpoint, every filter, code examples, and real use cases.


Table of Contents

  1. What the Intent API Actually Does
  2. The 18-Endpoint API Reference
  3. Walkthrough: Find In-Market Buyers in 5 Steps
  4. ICP Filters Deep Dive
  5. Six Use Cases (With Code)
  6. Site-to-Topics Matching
  7. Person-Level vs. Company-Level Providers
  8. FAQ

What the Intent API Actually Does

Here’s the architecture in plain English.

Leadpipe operates a cross-site pixel network across thousands of websites. That network monitors browsing behavior - what people read, how long they spend, what they come back to. This behavioral data gets matched against Leadpipe’s own identity graph (not a resold third-party graph) and classified into 20,000+ intent topics.

The result is person-level intent data:

Data PointExample
Full nameSarah Chen
Business emailsarah.chen@acmecorp.com
Personal emailsarahc@gmail.com
Phone(415) 555-0142
LinkedInlinkedin.com/in/sarahchen
Job titleVP of Marketing
CompanyAcme Corp
Topics researchingCRM Software, Marketing Automation, ABM Platforms
Intent score87/100

The key difference: Bombora tells you “Acme Corp is researching CRM.” Leadpipe tells you “Sarah Chen, VP of Marketing at Acme Corp, is researching CRM, Marketing Automation, and ABM Platforms - and here’s her direct email, phone, and LinkedIn.” That’s the gap between company-level and person-level intent.

Every intent signal is scored 1-100. Higher scores mean stronger behavioral signals - more pages visited across more sites, more time spent, more return visits on the topic. The default minimum threshold is 70, which filters out casual browsers and surfaces genuine research behavior.


The 18-Endpoint API Reference

Base URL: https://api.aws53.cloud

Auth: X-API-Key: sk_your_key header on every request.

Rate limits: 200 requests/minute authenticated, 2 requests/minute unauthenticated.

The 18 endpoints organize into four logical groups:

Discovery - Find Relevant Topics

#EndpointMethodWhat It DoesRate Limit
1/v1/site-topicsPOSTScrape a URL + AI-match to intent topics8/min unauth, 30/min auth
2/v1/intent/topics/inventoryGETBrowse all 20K+ topics with filtersCached 24h
3/v1/intent/topics/inventory/facetsGETDistinct types, industries, categories with countsCached 24h
4/v1/intent/topics/searchGETAutocomplete search (q, industry, type, limit 1-50)200/min
#EndpointMethodWhat It Does
5/v1/intent/topics/{topicId}/trendGETDaily trend: unique audience, total signals, avg score
6/v1/intent/topics/comparePOSTCompare trends across 1-10 topics side by side
7/v1/intent/topics/moversGETTop topics by day-over-day growth (up or down)

Audiences - Build and Manage Buyer Lists

#EndpointMethodWhat It Does
8/v1/intent/audience/filtersGETAvailable ICP filter values
9/v1/intent/topics/audience/previewPOSTPreview count + 50 masked samples (fast)
10/v1/intent/topics/audiencePOSTFull audience query with person-level data
11/v1/intent/audiencesGETList saved audiences
12/v1/intent/audiencesPOSTSave an audience (name, config, size)
13/v1/intent/audiences/{id}GETGet a saved audience
14/v1/intent/audiences/{id}PATCHUpdate audience (name, status, config)
15/v1/intent/audiences/{id}DELETEDelete a saved audience

Export & Analytics - Get Data Out

#EndpointMethodWhat It Does
16/v1/intent/audiences/{id}/exportPOSTCSV export with signed download URL (24h valid)
17/v1/intent/audiences/{id}/runsGETDaily materialized runs (date, row count, status)
18/v1/intent/audiences/{id}/statsGETFill rates per data field

That’s the full surface area. If you’ve used the Visitor Identification API, this follows the same auth pattern and design conventions. Let’s put it to work.


Walkthrough: Find In-Market Buyers in 5 Steps

Here’s the exact workflow to go from “I want to find people researching CRM software” to “here’s a CSV of 500 VP-level decision-makers with contact data.”

Step 1: Search for Relevant Topics

Find topics that match your market. The search endpoint supports autocomplete, type filtering (b2b, b2c, or both), and industry scoping.

curl -X GET "https://api.aws53.cloud/v1/intent/topics/search?q=CRM&type=b2b&limit=10" \
  -H "X-API-Key: sk_your_key"

Response:

{
  "topics": [
    { "id": 1234, "name": "CRM Software", "type": "b2b", "industry": "Software", "category": "Sales Tools" },
    { "id": 1235, "name": "CRM Implementation", "type": "b2b", "industry": "Software", "category": "Sales Tools" },
    { "id": 1236, "name": "CRM for Small Business", "type": "both", "industry": "Software", "category": "Sales Tools" },
    { "id": 1237, "name": "Salesforce Alternatives", "type": "b2b", "industry": "Software", "category": "Sales Tools" },
    { "id": 1238, "name": "HubSpot CRM", "type": "b2b", "industry": "Software", "category": "Sales Tools" }
  ]
}

Pro tip: Use the /v1/intent/topics/inventory/facets endpoint first to see what industries and categories exist. It returns distinct values with counts, so you know the shape of the 20K+ topic taxonomy before you start searching.

Step 2: Preview Audience Size

Before running a full query (which joins intent signals against the identity graph and costs more compute), preview the audience size. This returns a count and 50 masked sample records. Fast, cheap, and it tells you if your filters are too tight or too broad.

curl -X POST "https://api.aws53.cloud/v1/intent/topics/audience/preview" \
  -H "X-API-Key: sk_your_key" \
  -H "Content-Type: application/json" \
  -d '{
    "topicIds": [1234, 1237],
    "minScore": 70,
    "filters": {
      "seniority": ["VP", "Director", "C-Suite"],
      "companySize": ["50-200", "201-500"],
      "isB2b": true
    }
  }'

Response:

{
  "totalCount": 1847,
  "samples": [
    {
      "name": "S**** C***",
      "title": "VP of Sales",
      "company": "A**** Corp",
      "topicOverlap": 2,
      "score": 87
    }
  ]
}

1,847 VPs and Directors at mid-market B2B companies actively researching CRM software and Salesforce alternatives. That’s not a cold list. That’s a warm pipeline.

Step 3: Run the Full Audience Query

Now pull the actual person-level data. This endpoint joins intent signals with the identity graph and returns full contact records.

curl -X POST "https://api.aws53.cloud/v1/intent/topics/audience" \
  -H "X-API-Key: sk_your_key" \
  -H "Content-Type: application/json" \
  -d '{
    "topicIds": [1234, 1237],
    "minScore": 70,
    "filters": {
      "seniority": ["VP", "Director", "C-Suite"],
      "companySize": ["50-200", "201-500"],
      "isB2b": true,
      "hasBusinessEmail": true
    },
    "limit": 100,
    "cursor": null
  }'

The response includes full person records - name, business email, personal email, phone, LinkedIn, job title, company, intent score, and which topics they matched on. Paginate with the cursor field to pull the full 1,847 results in batches of up to 100.

Note on minTopicOverlap: If you pass multiple topicIds, you can require that a person matches on at least N of them. Set minTopicOverlap: 2 to surface people researching both CRM Software AND Salesforce Alternatives - these are the strongest signals.

Step 4: Save the Audience for Daily Refresh

Don’t run this query manually every day. Save it as a named audience, and Leadpipe materializes fresh results daily.

curl -X POST "https://api.aws53.cloud/v1/intent/audiences" \
  -H "X-API-Key: sk_your_key" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "CRM Buyers - Mid-Market VPs",
    "config": {
      "topicIds": [1234, 1237],
      "filters": {
        "seniority": ["VP", "Director", "C-Suite"],
        "companySize": ["50-200", "201-500"],
        "isB2b": true,
        "hasBusinessEmail": true
      },
      "minScore": 70
    },
    "audienceSize": 1847
  }'

You can check daily run history with GET /v1/intent/audiences/{id}/runs, which returns each day’s row count and status. Pause an audience with PATCH /v1/intent/audiences/{id} by setting status: "paused".

Step 5: Export to CSV

When you need data in a flat file - for Clay workflows, CRM imports, or ad platform uploads:

curl -X POST "https://api.aws53.cloud/v1/intent/audiences/{id}/export" \
  -H "X-API-Key: sk_your_key"

Response:

{
  "downloadUrl": "https://exports.aws53.cloud/audiences/abc123.csv?token=...",
  "expiresAt": "2026-04-02T14:30:00Z",
  "rowCount": 1847
}

The signed URL is valid for 24 hours. Download it, pipe it into your CRM integration, or upload it to LinkedIn Matched Audiences.


ICP Filters Deep Dive

The real power of the Intent API is in the filtering. You’re not just finding people who research a topic. You’re finding people who research a topic and match your exact ICP.

Here’s every available filter from the /v1/intent/audience/filters endpoint:

FilterTypeExample ValuesWhat It Does
companyIndustrystring[]“Software”, “Financial Services”, “Healthcare”Filter by company industry
senioritystring[]“C-Suite”, “VP”, “Director”, “Manager”, “Individual Contributor”Job seniority level
companySizestring[]“1-10”, “11-50”, “50-200”, “201-500”, “501-1000”, “1001-5000”, “5000+“Employee headcount range
departmentstring[]“Sales”, “Marketing”, “Engineering”, “Finance”, “HR”, “Operations”Functional department
statestring[]“CA”, “NY”, “TX”, etc.US state location
companyRevenueRangestring[]“$1M-$10M”, “$10M-$50M”, “$50M-$100M”, “$100M-$500M”, “$500M+“Annual revenue range
ageRangestring[]“25-34”, “35-44”, “45-54”, “55-64”Person’s age range
genderstring[]“male”, “female”Person’s gender
isB2bbooleantrue / falseB2B companies only
jobTitlestring”VP of Sales”, “CMO”Keyword match on title
hasBusinessEmailbooleantrueOnly return records with business email
hasPersonalEmailbooleantrueOnly return records with personal email
hasLinkedinbooleantrueOnly return records with LinkedIn URL
hasPhonebooleantrueOnly return records with phone number
companyDomainstring[]“acme.com”, “contoso.com”Specific company domains (ABM targeting)
companyNamestring[]“Acme Corp”, “Contoso”Specific company names

That’s 16 filters. You can combine any of them in a single query.

Want VPs at $50M+ revenue companies in California who are researching “marketing automation” and have a business email? That’s one API call:

{
  "topicIds": [2045],
  "minScore": 75,
  "filters": {
    "seniority": ["VP"],
    "companyRevenueRange": ["$50M-$100M", "$100M-$500M", "$500M+"],
    "state": ["CA"],
    "hasBusinessEmail": true
  }
}

Compare that to company-level intent data, where you get a company name and then have to go buy contact data separately, enrich it, filter it, and hope the person you found actually cares about the topic. With the Intent API, identity resolution and intent scoring happen in the same query.


Six Use Cases (With Code)

1. AI SDR Targeting

Your AI sales agent needs a daily feed of warm prospects. Instead of feeding it a static contact database, feed it intent-qualified buyers who are actively researching your category.

Set up a saved audience with your ICP filters. Every morning, your agent pulls the latest run via /v1/intent/audiences/{id}/runs, exports fresh results, and starts outreach to people who were researching your topics yesterday. The workflow looks like this:

  1. Create a saved audience with your topic IDs + ICP filters
  2. Cron job hits GET /v1/intent/audiences/{id}/runs at 7 AM
  3. If a new run is available, call POST /v1/intent/audiences/{id}/export for a CSV
  4. Agent ingests the CSV, personalizes based on intent topics and score, sends outreach

This is the data layer that most AI SDRs are missing - real-time, person-level, intent-qualified leads. The difference between an AI agent running on a static database and one running on daily intent signals is the difference between cold outreach and warm conversations.

2. ABM Campaign Audiences

Building a campaign targeting decision-makers at specific accounts? Use the companyDomain filter to restrict results to your target account list, then layer on intent topics to find the people at those accounts who are actually in-market.

{
  "topicIds": [3010, 3015],
  "minScore": 60,
  "filters": {
    "companyDomain": ["target1.com", "target2.com", "target3.com"],
    "seniority": ["VP", "Director", "C-Suite"]
  }
}

3. Competitive Intelligence

Track who’s researching your competitors’ product names. If “Salesforce Alternatives” or “HubSpot vs Pipedrive” are topics in the 20K+ inventory, you can build audiences of people actively evaluating alternatives - and reach them before they make a decision.

Use /v1/intent/topics/movers to spot which competitor-related topics are surging in audience size day over day:

curl -X GET "https://api.aws53.cloud/v1/intent/topics/movers?limit=10&direction=up&type=b2b&industry=Software" \
  -H "X-API-Key: sk_your_key"

This returns the 10 fastest-growing B2B software topics. If your competitor’s branded topic just spiked, that’s a signal that their marketing campaign is driving evaluation behavior - and a window for you to intercept that audience with a competing message.

4. Ad Targeting

Export a CSV of people researching your category, upload it to LinkedIn Matched Audiences or Google Customer Match. Your ads now target people with demonstrated intent, not just firmographic lookalikes.

The cost-per-conversion drops because you’re showing ads to people who are already in a buying cycle. This is a step beyond standard visitor identification for ad campaigns - you don’t need them to visit your site first.

5. Content Strategy

Use the Trends endpoints to inform your editorial calendar. /v1/intent/topics/movers shows which topics are growing fastest in audience size. /v1/intent/topics/{topicId}/trend gives you daily unique audience and signal counts.

If “AI-Powered CRM” jumped 40% in audience this week, that’s a signal to publish content on that topic now - while search volume is spiking and before competitors catch up.

6. Sales Prioritization

Your reps have a pipeline full of deals. Which ones should they work today? Score existing opportunities by cross-referencing their company domains against active intent signals.

{
  "topicIds": [1234],
  "minScore": 50,
  "filters": {
    "companyDomain": ["prospect1.com", "prospect2.com", "prospect3.com"]
  }
}

If someone at prospect1.com is actively researching CRM tools with a score of 92, that deal should jump to the top of the stack. If prospect3.com has zero intent signals, maybe your rep spends time elsewhere this week.


Site-to-Topics Matching

This is one of the most unique features in the API. POST /v1/site-topics scrapes any URL and uses AI to match it against the 20K+ topic taxonomy.

Why does that matter? Three reasons.

1. Competitor analysis. Paste a competitor’s homepage or product page. The API returns the topics their content maps to. Now you know what topics their audience cares about - and you can build audiences for those exact topics.

curl -X POST "https://api.aws53.cloud/v1/site-topics" \
  -H "X-API-Key: sk_your_key" \
  -H "Content-Type: application/json" \
  -d '{"url": "https://competitor.com/product"}'

Response:

{
  "url": "https://competitor.com/product",
  "matchedTopics": [
    { "id": 1234, "name": "CRM Software", "relevance": 0.95 },
    { "id": 2045, "name": "Marketing Automation", "relevance": 0.82 },
    { "id": 3010, "name": "Sales Engagement Platforms", "relevance": 0.78 }
  ]
}

2. Automatic topic discovery. Not sure which of the 20,000 topics matter for your business? Paste your own product pages. The AI match tells you exactly which topics align with what you sell - no manual browsing through a taxonomy.

3. Content-topic alignment. Before you publish a blog post, paste the draft URL into /v1/site-topics. See which intent topics it maps to. Then build an audience of people researching those topics and retarget them with the content.

Rate limit note: This endpoint is more resource-intensive (it scrapes and processes pages), so it has a tighter rate limit: 8 requests/minute unauthenticated, 30 requests/minute authenticated.


Person-Level vs. Company-Level Providers

If you’re coming from Bombora, G2, 6sense, or any of the traditional intent platforms, here’s how the Orbit API compares:

CapabilityBombora / 6sense / G2Leadpipe Orbit API
Intent resolutionCompany-levelPerson-level
Topic coverage8,000-12,000 B2B topics20,000+ B2B & B2C topics
Contact data includedNo (separate enrichment needed)Yes - email, phone, LinkedIn, title
DeliveryDashboard, weekly CSV, CRM syncReal-time API (200 req/min)
ICP filteringBasic firmographic16 filters including title, email, phone, domain
Minimum contract$20K-$60K/yearUsage-based API pricing
Time to first data2-6 week onboardingAPI key, first call in minutes
ABM domain targetingYesYes
Trend analyticsLimitedDaily trends, movers, cross-topic comparison
CSV exportYesYes (signed URL, 24h valid)

The fundamental difference: traditional providers give you a signal (“this company is in-market”), then you have to go buy contact data from ZoomInfo, Clearbit, or Apollo to find the actual person. That’s two vendors, two integrations, and a prayer that the person you enriched is the one who’s actually researching.

Leadpipe collapses intent detection and identity resolution into one API call. For a deeper dive on how the underlying matching works, see Person-Level Intent Data: How It Works.


Data Quality: Fill Rates and Transparency

One thing you’ll notice about the Orbit API that’s different from most data providers: it doesn’t hide behind aggregate accuracy claims. The /v1/intent/audiences/{id}/stats endpoint returns fill rates per data field for any saved audience.

That means you can see, before you commit to using the data, exactly what percentage of records have a business email, a phone number, a LinkedIn URL, a job title, and so on. No surprises. If your use case requires phone numbers and the fill rate for your audience is 40%, you know that upfront - not after you’ve already paid for and exported the data.

This matters because data accuracy varies dramatically across providers. Person-level intent data is only useful if the identity resolution behind it is accurate. Leadpipe uses deterministic matching against its own identity graph - not probabilistic guessing - which is why the fill rates hold up under scrutiny.


Getting Started

Two paths depending on how you work:

If you’re technical: Grab an API key, hit /v1/intent/topics/search to find your topics, run a /v1/intent/topics/audience/preview to see audience sizes, then pull full records with /v1/intent/topics/audience. You’ll have person-level intent data in minutes.

If you’re on the ops/marketing side: Start with the Leadpipe dashboard to explore topics visually, build audiences with the point-and-click builder, and export CSVs. When you’re ready to automate, the API endpoints mirror exactly what the UI does. Everything in this guide is also available through the integration with Clay and HubSpot.

Either way, you’re working with the same 20,000+ topics, the same identity graph, and the same person-level resolution. The API just lets you do it programmatically, at scale, on your schedule.

Start your free trial — 500 identified leads, no credit card required.


FAQ

How many topics does the API cover?

Over 20,000 topics across B2B and B2C categories. You can browse the full inventory with /v1/intent/topics/inventory and filter by type (b2b, b2c, or both), industry, and category. The /v1/intent/topics/inventory/facets endpoint returns distinct values with counts so you can see the taxonomy shape before querying.

How often is intent data refreshed?

Intent signals are refreshed daily. When you save an audience, Leadpipe materializes fresh results every day. You can track run history via /v1/intent/audiences/{id}/runs, which returns each day’s date, row count, and status. The /v1/intent/topics/{topicId}/trend endpoint provides daily granularity on audience size and signal counts.

What does the intent score (1-100) mean?

The score reflects the strength of a person’s behavioral signals for a given topic. A score of 70+ (the default minimum) indicates meaningful research activity - multiple page views across multiple sites, return visits, time spent on topic-relevant content. Scores above 90 represent the strongest signals: sustained, multi-session research behavior over several days. You can adjust the minScore and maxScore parameters on any audience query to widen or narrow the net.

What does API access cost?

Leadpipe uses usage-based pricing for the Intent API, not a flat annual contract. Plans start at $147/month with a free trial of 500 identified leads - no credit card required. For high-volume or white-label/OEM use cases, agency plans start at $1,279/month for 20,000 identifications. This includes both visitor identification and intent API access.