Skip to content

Partnerships API

Trace discovers partnerships from the partner pages and marketplaces companies publish. These endpoints let you list a company’s partners, find everyone who partners with a given company, confirm and describe a partnership between two companies, find their shared partners, and render partner network graphs.

All endpoints require an API key — see Authentication — and are credit-metered per partner company returned (see Credits). Wherever a path takes a company {identifier}, you can pass a domain (stripe.com) or a Trace slug (stripe).

GET /v1/companies/{identifier}/partnerships

Paginated list of every company that the given company partners with (bidirectional).

Query param Description
q Filter partners by name
partnership_types Comma-separated: technology, channel, generic
sort last_observed_at, first_observed_at, or observation_count; prefix - for descending (default -last_observed_at)
page, limit Pagination (limit max 100)
List Stripe's partners
curl "https://api.tracedata.ai/v1/companies/stripe.com/partnerships?limit=2" \
-H "X-API-Key: $TRACE_API_KEY"
Representative response (truncated)
{
"data": [
{
"partner_name": "Shopify",
"partner_domain": "shopify.com",
"partner_slug": "shopify",
"partnership_type": "technology",
"first_observed_at": "2025-07-14T00:00:00Z",
"last_observed_at": "2026-06-10T00:00:00Z",
"observation_count": 6
}
],
"pagination": { "page": 1, "limit": 2, "total_results": 482, "total_pages": 241, "has_next": true, "has_prev": false },
"company": { "slug": "stripe", "name": "Stripe", "primary_domain": "stripe.com", "partnership_count": 482 },
"type_counts": { "technology": 300, "channel": 120, "generic": 62 }
}

type_counts gives unfiltered totals per partnership type for the company.

GET /v1/partnerships/{partner_domain}/companies

The reverse direction: everyone who lists the given company as a partner. Accepts a domain or slug for {partner_domain}; an unknown one returns 404 partner_not_found.

Query param Description
page, limit Pagination (limit max 100)
include firmographics to attach the firmographics object to each company
Who partners with Salesforce
curl "https://api.tracedata.ai/v1/partnerships/salesforce.com/companies?limit=2" \
-H "X-API-Key: $TRACE_API_KEY"
Representative response (truncated)
{
"partner": { "name": "Salesforce", "domain": "salesforce.com", "total_companies": 1530 },
"data": [
{
"slug": "stripe",
"name": "Stripe",
"primary_domain": "stripe.com",
"first_seen_at": "2025-10-01T00:00:00Z",
"last_seen_at": "2026-06-01T00:00:00Z",
"observation_count": 4
}
],
"pagination": { "page": 1, "limit": 2, "total_results": 1530, "total_pages": 765, "has_next": true, "has_prev": false }
}
GET /v1/partnerships/{identifier_a}/{identifier_b}

Confirms and describes the partnership between two companies. Returns 404 partnership_not_found if no partnership exists (and 404 company_not_found if either identifier doesn’t resolve).

The Stripe ↔ Shopify partnership
curl "https://api.tracedata.ai/v1/partnerships/stripe.com/shopify.com" \
-H "X-API-Key: $TRACE_API_KEY"
Representative response (truncated)
{
"company_a": { "slug": "stripe", "name": "Stripe", "primary_domain": "stripe.com" },
"company_b": { "slug": "shopify", "name": "Shopify", "primary_domain": "shopify.com" },
"partnership_type": "technology",
"first_observed_at": "2025-07-14T00:00:00Z",
"shared_partner_count": 58,
"attributions": [
{ "source": "partner_page", "source_label": "Partner page", "observed_at": "2026-06-10T00:00:00Z" }
]
}

attributions lists where Trace observed the partnership (up to 50, most recent first). shared_partner_count is the number of partners the two companies have in common.

GET /v1/partnerships/{identifier_a}/{identifier_b}/shared-partners

Paginated list of companies that partner with both companies. Requires a partnership to exist between the two; otherwise 404 partnership_not_found.

Query param Description
page, limit Pagination (limit max 100)

Returns the standard paginated envelope plus company_a and company_b context objects.

Two graph endpoints return nodes (companies) and edges (partnerships) for visualization. Each node carries id, name, primary_domain, partnership_count, is_root, and (when known) slug. Each edge is a { "source": <id>, "target": <id> } pair.

GET /v1/companies/{identifier}/partnerships/graph

The network around one company.

Query param Description
depth 1 (direct partners) or 2 (partners of partners); default 1
max_nodes Cap on nodes returned (max 100, default 50)
GET /v1/partnerships/{identifier_a}/{identifier_b}/graph

The combined network around two companies, prioritizing their shared partners.

Query param Description
max_nodes Cap on nodes returned (max 100, default 50)
Stripe's partner graph
curl "https://api.tracedata.ai/v1/companies/stripe.com/partnerships/graph?depth=1&max_nodes=25" \
-H "X-API-Key: $TRACE_API_KEY"
Representative response (truncated)
{
"root_company": 4021,
"nodes": [
{ "id": 4021, "name": "Stripe", "primary_domain": "stripe.com", "slug": "stripe", "partnership_count": 482, "is_root": true },
{ "id": 5582, "name": "Shopify", "primary_domain": "shopify.com", "slug": "shopify", "partnership_count": 311, "is_root": false }
],
"edges": [ { "source": 4021, "target": 5582 } ]
}

The two-company graph returns root_companies (an array of two IDs) instead of root_company.