targetwise-ai Employees API
Bounded employee search and selective contact details.
Bounded employee search and selective contact details.
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-employees-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 Employees API
version: v1
description: 'Operations tagged Employees 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: Employees
description: Bounded employee search and selective contact details.
paths:
/api/v1/employees/search:
post:
operationId: targetwise_search_employees
summary: Search employees
description: Searches employee records by company ID, name, job title, department or seniority. Returns names and employee IDs without revealing email or phone details. Employee IDs belong to a different namespace from domain-search contact IDs. Calls are metered.
tags:
- Employees
security:
- bearerAuth: []
requestBody:
required: true
content:
application/json:
schema:
type: object
additionalProperties: false
required:
- filters
properties:
page:
type: integer
minimum: 1
maximum: 10
limit:
type: integer
minimum: 1
maximum: 25
filters:
type: object
additionalProperties: false
minProperties: 1
properties:
company_id:
type: string
pattern: ^[0-9]+$
full_name:
type: string
minLength: 2
maxLength: 200
job_titles:
type: array
minItems: 1
maxItems: 20
items:
type: string
maxLength: 200
department_ids:
type: array
minItems: 1
maxItems: 20
items:
type: integer
minimum: 1
seniority_ids:
type: array
minItems: 1
maxItems: 20
items:
type: integer
minimum: 1
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: employee_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: employee_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/employees/details:
post:
operationId: targetwise_get_employee
summary: Get employee details
description: Retrieve one selected employee by an employee ID returned by TargetWise employee search. Return available work email and business phone only when requested. Phone classification may be unknown.
tags:
- Employees
security:
- bearerAuth: []
requestBody:
required: true
content:
application/json:
schema:
type: object
additionalProperties: false
required:
- employee_id
properties:
employee_id:
type: string
pattern: ^[0-9]+$
include_email:
type: boolean
default: true
include_phone:
type: boolean
default: true
responses:
'200':
description: A normalized match, partial match or no-match result.
content:
application/json:
schema:
type: object
additionalProperties: false
required:
- object
- operation
- request_id
- status
- data
- unresolved_fields
- grounding
properties:
object:
type: string
const: enrichment_result
operation:
type: string
const: employee_details
request_id:
type: string
status:
type: string
enum:
- matched
- partial
- not_found
data:
anyOf:
- type: object
additionalProperties: false
properties:
person_id:
type: string
full_name:
type: string
first_name:
type: string
last_name:
type: string
headline:
type: string
description: Professional headline, returned when include_profile is true and the field is available.
role:
type: string
seniority:
type: array
items:
type: string
departments:
type: array
items:
type: string
work_email:
type: string
format: email
business_phone:
type: string
phone_type:
type: string
const: unknown
description: The source returns a generic phone field without classifying it as mobile or landline.
linkedin_url:
type: string
format: uri
location:
type: string
description: Professional location, such as city, region and country; requires include_profile.
country:
type: string
company_id:
type: string
company_name:
type: string
company_website:
type: string
company_linkedin_url:
type: string
work_experience:
type: array
maxItems: 25
items:
type: object
additionalProperties: false
properties:
company_name:
type: string
maxLength: 300
title:
type: string
maxLength: 300
location:
type: string
maxLength: 300
description:
type: string
maxLength: 2000
started_on:
type: string
maxLength: 40
description: Reported start date; may contain only a year or month and year.
ended_on:
type:
- string
- 'null'
maxLength: 40
description: Reported end date. An explicit null identifies a current role; an omitted value is unknown.
is_current:
type: boolean
description: Returned when the source explicitly identifies a current or past role.
description: Available employment history when include_profile is true.
education:
type: array
maxItems: 25
items:
type: object
additionalProperties: false
properties:
institution_name:
type: string
maxLength: 300
study:
type: string
maxLength: 300
description: Reported course or qualification, preserved without inferring a separate degree or subject.
degree:
type: string
maxLength: 300
field_of_study:
type: string
maxLength: 300
started_on:
type: string
maxLength: 40
ended_on:
type:
- string
- 'null'
maxLength: 40
description: Available institutions, studies and dates when include_profile is true.
skills:
type: array
items:
type: string
description: Reported professional skills when include_profile is true.
- type: 'null'
unresolved_fields:
type: array
items:
type: string
grounding:
type: object
additionalProperties: false
required:
- retrieved_at
- source_provenance
properties:
retrieved_at:
type: string
format: date-time
source_provenance:
type: string
enum:
- included
- 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: employee_details
x-targetwise-access:
evaluation:
enabled: true
subject_to_workspace_limits: true
paid:
enabled: true
input_condition:
not:
anyOf:
- required:
- include_profile
properties:
include_profile:
const: true
- required:
- include_email
- include_phone
properties:
include_email:
const: false
include_phone:
const: false
unavailable_error: operation_pricing_unavailable
x-targetwise-pricing:
paid_pricing_available: true
billable_fields:
- work_email
- business_phone
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
requested_field_defaults:
include_email: true
include_phone: true
include_profile: false
evaluation:
unit: credits
maximum_reservation: 3
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