targetwise-ai Prospecting API
Bounded candidate discovery. Search before enriching.
Bounded candidate discovery. Search before enriching.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/targetwise-ai:targetwise-ai-prospecting-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Targetwise Ai Prospecting API
version: v1
description: 'Operations tagged Prospecting across 2 of this provider''s published API definitions: openapi.json, targetwise-ai-openapi.json. Each path carries the servers of the definition it was published in.'
servers:
- url: https://targetwise.ai
description: Current deployment
tags:
- name: Prospecting
description: Bounded candidate discovery. Search before enriching.
paths:
/api/v1/prospecting/companies/search:
post:
operationId: targetwise_search_companies
summary: Search companies
description: Returns a bounded page of company candidates using allowlisted firmographic, classification, location, technology, incorporation or turnover filters. Calls are metered and the maximum page is 10 with at most 25 candidates per page.
tags:
- Prospecting
security:
- bearerAuth: []
requestBody:
required: true
content:
application/json:
schema:
type: object
additionalProperties: false
required:
- filters
properties:
page:
type: integer
minimum: 1
maximum: 10
default: 1
limit:
type: integer
minimum: 1
maximum: 25
default: 10
filters:
type: object
additionalProperties: false
minProperties: 1
properties:
status_ids:
type: array
minItems: 1
maxItems: 50
items:
type: integer
employee_count:
type: object
additionalProperties: false
minProperties: 1
properties:
min:
type: integer
minimum: 0
max:
type: integer
minimum: 0
legal_form_ids:
type: array
minItems: 1
maxItems: 50
items:
type: integer
industry_paths:
type: array
minItems: 1
maxItems: 50
items:
type: string
minLength: 1
maxLength: 253
website_keywords:
type: array
minItems: 1
maxItems: 50
items:
type: string
minLength: 1
maxLength: 253
nace_codes:
type: array
minItems: 1
maxItems: 50
items:
type: string
minLength: 1
maxLength: 100
isic_codes:
type: array
minItems: 1
maxItems: 50
items:
type: string
minLength: 1
maxLength: 100
country_paths:
type: array
minItems: 1
maxItems: 50
items:
type: string
minLength: 1
maxLength: 500
region_paths:
type: array
minItems: 1
maxItems: 50
items:
type: string
minLength: 1
maxLength: 500
postal_codes:
type: array
minItems: 1
maxItems: 50
items:
type: string
minLength: 1
maxLength: 40
technology_ids:
type: array
minItems: 1
maxItems: 50
items:
type: string
minLength: 1
maxLength: 128
incorporated:
type: object
additionalProperties: false
minProperties: 1
properties:
from:
type: string
format: date
to:
type: string
format: date
turnover:
type: object
additionalProperties: false
required:
- currency
minProperties: 2
properties:
min:
type: number
minimum: 0
max:
type: number
minimum: 0
currency:
type: string
pattern: ^[A-Za-z]{3}$
responses:
'200':
description: A bounded candidate page. An empty result is a normal business outcome.
content:
application/json:
schema:
type: object
additionalProperties: false
required:
- object
- operation
- request_id
- status
- data
- pagination
- grounding
properties:
object:
type: string
const: prospecting_result
operation:
type: string
const: company_prospecting
request_id:
type: string
status:
type: string
enum:
- matched
- not_found
data:
type: array
items:
type: object
additionalProperties: false
properties:
company_id:
type: string
company_name:
type: string
pagination:
type: object
additionalProperties: false
required:
- page
- per_page
- total_results
- total_pages
- has_more
properties:
page:
type: integer
minimum: 1
maximum: 10
per_page:
type: integer
minimum: 1
maximum: 25
total_results:
type: integer
minimum: 0
total_pages:
type: integer
minimum: 0
has_more:
type: boolean
grounding:
type: object
additionalProperties: false
required:
- retrieved_at
- source_provenance
properties:
retrieved_at:
type: string
format: date-time
source_provenance:
type: string
const: not_available
'400':
description: Invalid request or operation_pricing_unavailable. Adding credit does not enable an unpriced operation.
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
headers:
X-Request-Id:
schema:
type: string
description: Troubleshooting identifier.
'401':
description: A valid TargetWise bearer key is required.
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
headers:
X-Request-Id:
schema:
type: string
description: Troubleshooting identifier.
WWW-Authenticate:
schema:
type: string
'402':
description: Free allowance or paid balance exhausted, or usage_budget_reached. A top-up does not increase the monthly usage budget.
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
headers:
X-Request-Id:
schema:
type: string
description: Troubleshooting identifier.
'403':
description: The workspace is inactive or access is restricted.
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
headers:
X-Request-Id:
schema:
type: string
description: Troubleshooting identifier.
'409':
description: Workspace usage could not be reserved. Inspect retryable before a bounded retry.
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
headers:
X-Request-Id:
schema:
type: string
description: Troubleshooting identifier.
'413':
description: The request body exceeds 64 KB.
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
headers:
X-Request-Id:
schema:
type: string
description: Troubleshooting identifier.
'415':
description: 'Use Content-Type: application/json.'
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
headers:
X-Request-Id:
schema:
type: string
description: Troubleshooting identifier.
'429':
description: The workspace attempt/rate limit or provider limit has been reached.
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
headers:
X-Request-Id:
schema:
type: string
description: Troubleshooting identifier.
Retry-After:
schema:
type: string
description: Seconds to wait before retrying; also inspect error.retryable.
'500':
description: Unexpected internal error.
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
headers:
X-Request-Id:
schema:
type: string
description: Troubleshooting identifier.
'502':
description: The data connection returned an unusable response.
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
headers:
X-Request-Id:
schema:
type: string
description: Troubleshooting identifier.
'503':
description: The service or data connection is unavailable or unconfigured.
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
headers:
X-Request-Id:
schema:
type: string
description: Troubleshooting identifier.
'504':
description: The data connection timed out.
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
headers:
X-Request-Id:
schema:
type: string
description: Troubleshooting identifier.
x-targetwise-operation: company_prospecting
x-targetwise-access:
evaluation:
enabled: true
subject_to_workspace_limits: true
paid:
enabled: false
unavailable_error: operation_pricing_unavailable
x-targetwise-pricing:
paid_pricing_available: false
billable_fields: []
paid_charge_on: requested_fields_returned
missing_requested_field_charge_cents: 0
free_results_used_first: true
rates_reference: https://targetwise.ai/api/v1/openapi.json#/x-targetwise-billing/plans
evaluation:
unit: credits
maximum_reservation: 1
servers:
- url: https://targetwise.ai
description: Current deployment
/api/v1/prospecting/contacts/search:
post:
operationId: targetwise_search_contacts
summary: Search contacts at known domains
description: Returns a bounded page of contact candidates for known company domains, optionally narrowed by company location, contact location and seniority. Candidate results exclude email and phone. Calls are metered.
tags:
- Prospecting
security:
- bearerAuth: []
requestBody:
required: true
content:
application/json:
schema:
type: object
additionalProperties: false
required:
- domains
properties:
domains:
type: array
minItems: 1
maxItems: 20
items:
type: string
minLength: 3
maxLength: 253
company_locations:
type: array
minItems: 1
maxItems: 50
items:
type: string
minLength: 1
maxLength: 200
contact_locations:
type: array
minItems: 1
maxItems: 50
items:
type: string
minLength: 1
maxLength: 200
seniorities:
type: array
minItems: 1
maxItems: 11
items:
type: string
enum:
- owner
- founder
- c_suite
- partner
- vp
- head
- director
- manager
- senior
- entry
- intern
page:
type: integer
minimum: 1
maximum: 10
default: 1
limit:
type: integer
minimum: 1
maximum: 25
default: 10
responses:
'200':
description: A bounded candidate page. An empty result is a normal business outcome.
content:
application/json:
schema:
type: object
additionalProperties: false
required:
- object
- operation
- request_id
- status
- data
- pagination
- grounding
properties:
object:
type: string
const: prospecting_result
operation:
type: string
const: contact_prospecting
request_id:
type: string
status:
type: string
enum:
- matched
- not_found
data:
type: array
items:
type: object
additionalProperties: false
properties:
person_id:
type: string
full_name:
type: string
first_name:
type: string
last_name:
type: string
role:
type: string
seniority:
type: array
items:
type: string
departments:
type: array
items:
type: string
linkedin_url:
type: string
format: uri
location:
type: string
country:
type: string
company_id:
type: string
company_name:
type: string
company_website:
type: string
company_linkedin_url:
type: string
pagination:
type: object
additionalProperties: false
required:
- page
- per_page
- total_results
- total_pages
- has_more
properties:
page:
type: integer
minimum: 1
maximum: 10
per_page:
type: integer
minimum: 1
maximum: 25
total_results:
type: integer
minimum: 0
total_pages:
type: integer
minimum: 0
has_more:
type: boolean
grounding:
type: object
additionalProperties: false
required:
- retrieved_at
- source_provenance
properties:
retrieved_at:
type: string
format: date-time
source_provenance:
type: string
const: not_available
'400':
description: Invalid request or operation_pricing_unavailable. Adding credit does not enable an unpriced operation.
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
headers:
X-Request-Id:
schema:
type: string
description: Troubleshooting identifier.
'401':
description: A valid TargetWise bearer key is required.
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
headers:
X-Request-Id:
schema:
type: string
description: Troubleshooting identifier.
WWW-Authenticate:
schema:
type: string
'402':
description: Free allowance or paid balance exhausted, or usage_budget_reached. A top-up does not increase the monthly usage budget.
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
headers:
X-Request-Id:
schema:
type: string
description: Troubleshooting identifier.
'403':
description: The workspace is inactive or access is restricted.
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
headers:
X-Request-Id:
schema:
type: string
description: Troubleshooting identifier.
'409':
description: Workspace usage could not be reserved. Inspect retryable before a bounded retry.
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
headers:
X-Request-Id:
schema:
type: string
description: Troubleshooting identifier.
'413':
description: The request body exceeds 64 KB.
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
headers:
X-Request-Id:
schema:
type: string
description: Troubleshooting identifier.
'415':
description: 'Use Content-Type: application/json.'
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
headers:
X-Request-Id:
schema:
type: string
description: Troubleshooting identifier.
'429':
description: The workspace attempt/rate limit or provider limit has been reached.
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
headers:
X-Request-Id:
schema:
type: string
description: Troubleshooting identifier.
Retry-After:
schema:
type: string
description: Seconds to wait before retrying; also inspect error.retryable.
'500':
description: Unexpected internal error.
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
headers:
X-Request-Id:
schema:
type: string
description: Troubleshooting identifier.
'502':
description: The data connection returned an unusable response.
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
headers:
X-Request-Id:
schema:
type: string
description: Troubleshooting identifier.
'503':
description: The service or data connection is unavailable or unconfigured.
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
headers:
X-Request-Id:
schema:
type: string
description: Troubleshooting identifier.
'504':
description: The data connection timed out.
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
headers:
X-Request-Id:
schema:
type: string
description: Troubleshooting identifier.
x-targetwise-operation: contact_prospecting
x-targetwise-access:
evaluation:
enabled: true
subject_to_workspace_limits: true
paid:
enabled: false
unavailable_error: operation_pricing_unavailable
x-targetwise-pricing:
paid_pricing_available: false
billable_fields: []
paid_charge_on: requested_fields_returned
missing_requested_field_charge_cents: 0
free_results_used_first: true
rates_reference: https://targetwise.ai/api/v1/openapi.json#/x-targetwise-billing/plans
evaluation:
unit: credits
maximum_reservation: 1
servers:
- url: https://targetwise.ai
description: Current deployment
components:
schemas:
ApiError:
type: object
additionalProperties: false
required:
- error
- request_id
properties:
request_id:
type: string
error:
type: object
additionalProperties: false
required:
- code
- message
- retryable
properties:
code:
type: string
message:
type: string
retryable:
type: boolean
details: {}
securitySchemes:
bearerAuth:
type: http
scheme: bearer
bearerFormat: TargetWise API key
x-refined-from:
- openapi.json
- targetwise-ai-openapi.json
x-targetwise-billing:
currency: USD
unit: usd_cents
shared_channels:
- dashboard
- rest
- mcp
free_allowance:
returned_work_emails: 20
returned_business_phones: 5
unused_results_kept_after_purchase: true
plans:
- key: paygo
monthly_included_cents: 0
email_cents: 9
business_phone_cents: 18
paid_charge_policy: Only requested email/phone fields actually returned are charged. Remaining free results are used first.
reservation_policy: Reserve the maximum requested-field charge before retrieval; release unused reservations. Missing requested fields cost zero.
balance_order:
- remaining_free_results
- prepaid_balance
subscription_required: false
prepaid_balance_carries_forward: true
existing_subscription_terms_preserved: true
minimum_prepaid_topup_cents: 10000
larger_deposit_changes_rates: false
usage_budget_period: UTC calendar month
topup_increases_usage_budget: false
account_status: https://targetwise.ai/api/v1/account/status
pricing_url: https://targetwise.ai/pricing