Discovery Quick Start¶
From zero to discovered companies in 5 steps.
This quick start walks you through the complete discovery flow: create a blacklist, add exclusions, submit a discovery order, track it, and retrieve results.
Before You Start¶
You need an API key with these scopes: orders:read, orders:write, blacklists:read, blacklists:write.
Create one in the OpenProspect dashboard under Settings > Developer > API Keys and select the Orders preset (or Custom with the scopes listed above).
Set your key:
1. Create a Blacklist¶
Exclude companies you already know (existing customers, competitors).
curl -s -X POST "$BASE_URL/blacklists" \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{"name": "Existing Customers", "description": "Companies in our CRM"}' | jq .
Save the id for the next step.
2. Add Entries to the Blacklist¶
Add companies to exclude. Provide website_url for best matching accuracy.
curl -s -X POST "$BASE_URL/blacklists/YOUR_BLACKLIST_ID/entries" \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"entries": [
{"company_name": "Acme Corp", "website_url": "https://www.acme-corp.com"},
{"company_name": "Global Industries GmbH", "city": "Munich", "country": "Germany"}
]
}' | jq '. | length'
3. Create a Discovery Order¶
Describe your ideal customer and let OpenProspect find matching companies.
curl -s -X POST "$BASE_URL/orders" \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"order_type": "DISCOVERY",
"title": "DACH SaaS Discovery",
"features": ["COMPANY_DATA", "CONTACTS", "ANALYSIS"],
"ideal_customer_profile": "Mid-market B2B SaaS companies in DACH with 50-500 employees",
"seller_offering": "AI-powered lead generation platform",
"target_countries": ["Germany", "Austria", "Switzerland"],
"blacklist_ids": ["YOUR_BLACKLIST_ID"],
"profile_name": "DACH SaaS Discovery"
}' | jq .
{
"order_id": "YOUR_ORDER_ID",
"order_type": "DISCOVERY",
"status": "RECEIVED",
"company_count": 0,
"estimated_cost": null,
"message": "Order received. Awaiting admin review."
}
Save the order_id for tracking.
4. Track Order Status¶
Poll until the status is COMPLETED:
curl -s -X GET "$BASE_URL/orders/YOUR_ORDER_ID" \
-H "Authorization: Bearer $API_KEY" | jq '{status, company_count}'
Use Webhooks
Instead of polling, add "webhook_url": "https://your-api.com/webhook" to the create order request. See Webhook Notifications.
5. Retrieve Results¶
Get the discovered companies with enriched data:
curl -s -X GET "$BASE_URL/orders/YOUR_ORDER_ID/results?limit=5" \
-H "Authorization: Bearer $API_KEY" | jq '.items[] | {name, match_score, city, prospects: (.prospects | length)}'
{"name": "CloudOps Technologies GmbH", "match_score": 9, "city": "Berlin", "prospects": 3}
{"name": "DataFlow AG", "match_score": 8, "city": "Munich", "prospects": 2}
{"name": "SwissCloud Solutions", "match_score": 8, "city": "Zurich", "prospects": 4}
Page through all results with offset:
curl -s -X GET "$BASE_URL/orders/YOUR_ORDER_ID/results?limit=50&offset=0" \
-H "Authorization: Bearer $API_KEY" | jq '.total, .has_more'
What's Next?¶
- Blacklist Management Guide -- Full CRUD, bulk operations, assignment to prospect searches
- Discovery Order Guide -- All discovery fields, ICP writing tips, TypeScript interfaces
- Enrichment Order Guide -- Enrich your own company list instead of discovering new ones
- Authentication -- Scopes, API key management, security
- Error Codes -- Complete error reference