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
- What the Intent API Actually Does
- The 18-Endpoint API Reference
- Walkthrough: Find In-Market Buyers in 5 Steps
- ICP Filters Deep Dive
- Six Use Cases (With Code)
- Site-to-Topics Matching
- Person-Level vs. Company-Level Providers
- 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 Point | Example |
|---|---|
| Full name | Sarah Chen |
| Business email | sarah.chen@acmecorp.com |
| Personal email | sarahc@gmail.com |
| Phone | (415) 555-0142 |
| linkedin.com/in/sarahchen | |
| Job title | VP of Marketing |
| Company | Acme Corp |
| Topics researching | CRM Software, Marketing Automation, ABM Platforms |
| Intent score | 87/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
| # | Endpoint | Method | What It Does | Rate Limit |
|---|---|---|---|---|
| 1 | /v1/site-topics | POST | Scrape a URL + AI-match to intent topics | 8/min unauth, 30/min auth |
| 2 | /v1/intent/topics/inventory | GET | Browse all 20K+ topics with filters | Cached 24h |
| 3 | /v1/intent/topics/inventory/facets | GET | Distinct types, industries, categories with counts | Cached 24h |
| 4 | /v1/intent/topics/search | GET | Autocomplete search (q, industry, type, limit 1-50) | 200/min |
Trends - Track Market Signals
| # | Endpoint | Method | What It Does |
|---|---|---|---|
| 5 | /v1/intent/topics/{topicId}/trend | GET | Daily trend: unique audience, total signals, avg score |
| 6 | /v1/intent/topics/compare | POST | Compare trends across 1-10 topics side by side |
| 7 | /v1/intent/topics/movers | GET | Top topics by day-over-day growth (up or down) |
Audiences - Build and Manage Buyer Lists
| # | Endpoint | Method | What It Does |
|---|---|---|---|
| 8 | /v1/intent/audience/filters | GET | Available ICP filter values |
| 9 | /v1/intent/topics/audience/preview | POST | Preview count + 50 masked samples (fast) |
| 10 | /v1/intent/topics/audience | POST | Full audience query with person-level data |
| 11 | /v1/intent/audiences | GET | List saved audiences |
| 12 | /v1/intent/audiences | POST | Save an audience (name, config, size) |
| 13 | /v1/intent/audiences/{id} | GET | Get a saved audience |
| 14 | /v1/intent/audiences/{id} | PATCH | Update audience (name, status, config) |
| 15 | /v1/intent/audiences/{id} | DELETE | Delete a saved audience |
Export & Analytics - Get Data Out
| # | Endpoint | Method | What It Does |
|---|---|---|---|
| 16 | /v1/intent/audiences/{id}/export | POST | CSV export with signed download URL (24h valid) |
| 17 | /v1/intent/audiences/{id}/runs | GET | Daily materialized runs (date, row count, status) |
| 18 | /v1/intent/audiences/{id}/stats | GET | Fill 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 multipletopicIds, you can require that a person matches on at least N of them. SetminTopicOverlap: 2to 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:
| Filter | Type | Example Values | What It Does |
|---|---|---|---|
companyIndustry | string[] | “Software”, “Financial Services”, “Healthcare” | Filter by company industry |
seniority | string[] | “C-Suite”, “VP”, “Director”, “Manager”, “Individual Contributor” | Job seniority level |
companySize | string[] | “1-10”, “11-50”, “50-200”, “201-500”, “501-1000”, “1001-5000”, “5000+“ | Employee headcount range |
department | string[] | “Sales”, “Marketing”, “Engineering”, “Finance”, “HR”, “Operations” | Functional department |
state | string[] | “CA”, “NY”, “TX”, etc. | US state location |
companyRevenueRange | string[] | “$1M-$10M”, “$10M-$50M”, “$50M-$100M”, “$100M-$500M”, “$500M+“ | Annual revenue range |
ageRange | string[] | “25-34”, “35-44”, “45-54”, “55-64” | Person’s age range |
gender | string[] | “male”, “female” | Person’s gender |
isB2b | boolean | true / false | B2B companies only |
jobTitle | string | ”VP of Sales”, “CMO” | Keyword match on title |
hasBusinessEmail | boolean | true | Only return records with business email |
hasPersonalEmail | boolean | true | Only return records with personal email |
hasLinkedin | boolean | true | Only return records with LinkedIn URL |
hasPhone | boolean | true | Only return records with phone number |
companyDomain | string[] | “acme.com”, “contoso.com” | Specific company domains (ABM targeting) |
companyName | string[] | “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:
- Create a saved audience with your topic IDs + ICP filters
- Cron job hits
GET /v1/intent/audiences/{id}/runsat 7 AM - If a new run is available, call
POST /v1/intent/audiences/{id}/exportfor a CSV - 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:
| Capability | Bombora / 6sense / G2 | Leadpipe Orbit API |
|---|---|---|
| Intent resolution | Company-level | Person-level |
| Topic coverage | 8,000-12,000 B2B topics | 20,000+ B2B & B2C topics |
| Contact data included | No (separate enrichment needed) | Yes - email, phone, LinkedIn, title |
| Delivery | Dashboard, weekly CSV, CRM sync | Real-time API (200 req/min) |
| ICP filtering | Basic firmographic | 16 filters including title, email, phone, domain |
| Minimum contract | $20K-$60K/year | Usage-based API pricing |
| Time to first data | 2-6 week onboarding | API key, first call in minutes |
| ABM domain targeting | Yes | Yes |
| Trend analytics | Limited | Daily trends, movers, cross-topic comparison |
| CSV export | Yes | Yes (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.