targetwise-ai Prospecting API

Bounded candidate discovery. Search before enriching.

Operations 2

POST /api/v1/prospecting/companies/search Search companies #
POST /api/v1/prospecting/contacts/search Search contacts at known domains #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • 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.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/targetwise-ai:targetwise-ai-prospecting-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

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 Specification

targetwise-ai-prospecting-api-openapi.yml Raw ↑
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