---
title: "Enrich leads from supersearch"
method: POST
path: "/api/v2/supersearch-enrichment/enrich-leads-from-supersearch"
tags: ["SuperSearchEnrichment"]
---

# Enrich leads from supersearch

`POST /api/v2/supersearch-enrichment/enrich-leads-from-supersearch`

## Request

- Base URL: `https://api.instantly.ai`
- URL: `https://api.instantly.ai/api/v2/supersearch-enrichment/enrich-leads-from-supersearch`
- Auth: HTTP bearer

Add leads from SuperSearch to a list and enrich them. A list is automatically created if no list is provided.

## Request body

- object
  - `search_filters` object, required: Search filters to find leads.
    - `company_list_id` string: Company-list audience boundary. Only completed lists owned by the caller workspace are accepted.
    - `locations` union
      - union[]: Legacy format: Array of locations to include in the search. For new integrations, use the object format with include/exclude properties.
        - union
          - object
            - `place_id` string, required: Google Maps Place ID of the lead's location (https://developers.google.com/maps/documentation/places/web-service/place-id)
            - `label` string: Label of the lead's location
          - union
            - object
              - …
            - object
              - …
            - object
              - …
      - object: Locations to include or exclude in the search
        - `include` union[]: Locations to include in the search
          - union
            - object
              - …
            - union
              - …
        - `exclude` union[]: Locations to exclude from the search
          - union
            - object
              - …
            - union
              - …
    - `department` string[]
    - `level` string[]
    - `employeeCount` union[]: Employee count filters.
      - union
        - '0 - 25' | '25 - 100' | '100 - 250' | '250 - 1000' | '1K - 10K' | '10K - 50K' | '50K - 100K' | '> 100K': Legacy format: Predefined employee count range
        - object: Employee count greater-than-or-equal range
          - `op` 'gte', required: Greater than or equal operation.
          - `min` number, required: Minimum employee count (inclusive).
          - `max` number, nullable: Deprecated opposite bound accepted for compatibility and removed during normalization.
        - object: Employee count less-than-or-equal range
          - `op` 'lte', required: Less than or equal operation.
          - `max` number, required: Maximum employee count (inclusive).
          - `min` number, nullable: Deprecated opposite bound accepted for compatibility and removed during normalization.
        - union
          - object
            - `op` 'between', required: Between operation.
            - `min` number, nullable, required: Minimum employee count (inclusive).
            - `max` number, nullable: Maximum employee count (inclusive).
          - object
            - `op` 'between', required: Between operation.
            - `min` number, nullable: Minimum employee count (inclusive).
            - `max` number, nullable, required: Maximum employee count (inclusive).
        - union
          - object
            - `op` 'preset_between', required: Preset between operation.
            - `min` number, nullable, required: Minimum employee count (inclusive).
            - `max` number, nullable: Maximum employee count (inclusive).
          - object
            - `op` 'preset_between', required: Preset between operation.
            - `min` number, nullable: Minimum employee count (inclusive).
            - `max` number, nullable, required: Maximum employee count (inclusive).
    - `revenue` string[]
    - `news` string[]
    - `jobListing` string[]: Canonical filter for companies that are hiring for the specified job titles.
    - `jobListingFilter` string[]: Deprecated compatibility key for Job Listing filters. Use `jobListing` instead. If both keys are present, `jobListing` takes precedence.
    - `title` object
      - `include` string[]: Titles of the lead to include in the search
      - `exclude` string[]: Titles of the lead to exclude in the search
      - `includeMode` 'EXACT' | 'CONTAINS': How included titles are matched. Defaults to CONTAINS.
      - `excludeMode` 'EXACT' | 'CONTAINS': How excluded titles are matched. Defaults to CONTAINS.
    - `name` string[]: Names of the lead to include in the search
    - `company_name` object
      - `include` string[]: Companies of the lead to include in the search
      - `exclude` string[]: Companies of the lead to exclude in the search
    - `businessType` object: Business type of the lead company. Any-of on each side: `include` returns only companies labelled with one of the types, `exclude` drops them and keeps companies with no label.
      - `include` string[]: Business types of the lead company to include in the search
      - `exclude` string[]: Business types of the lead company to exclude from the search
    - `customerType` object: Who the lead company sells to. Any-of on each side: `include` returns only companies labelled with one of the values, `exclude` drops them and keeps companies with no label. A company selling to both holds both values, so "B2B only" is include b2b with exclude b2c.
      - `include` string[]: Customer types of the lead company to include in the search
      - `exclude` string[]: Customer types of the lead company to exclude from the search
    - `look_alike` string: If set, the lead finder will find companies that are similar to the look-alike domain
    - `lookAlike` string: Product-UI alias of `look_alike`; both keys are accepted
    - `lookAlikeMode` string: Deprecated. No longer written by the product UI; still accepted and forwarded so existing integrations keep working.
    - `technologies` string[]: Technologies the lead company uses
    - `fundingType` string[]: Product-UI alias of `funding_type`; both keys are accepted. See `funding_type` for the canonical values.
    - `locationMode` string: Product-UI alias of `location_mode` (`contact` or `company`); both keys are accepted
    - `keyword_filter` object
      - `exclude` string
      - `include` string
      - `include_mode` 'ANY' | 'ALL'
    - `industry` object
      - `exclude` string[]: Industries of the lead company to exclude in the search
      - `include` string[]
    - `subIndustry` object
      - `exclude` string[]: Subindustries of the lead company to exclude in the search
      - `include` string[]: Subindustries of the lead company to include in the search
    - `domains` string[]
    - `website_visitors` boolean: Restrict the search to companies that visited your website (requires a connected Website Visitors pixel). Combines with `domains` as an intersection.
    - `funding_type` string[]
    - `signals` union[]: Filter leads by Autobound signal categories (e.g. job changes, traffic surges, LinkedIn activity). Leads matching ANY of the specified signals within the per-signal freshness window will be returned.
      - union
        - string: Signal category name. Uses the default 30-day freshness window.
        - object
          - `key` string, required: Signal category to filter by.
          - `period_days` number: Freshness window in days. Only leads whose most recent signal of this category is within this window are returned. Defaults to 30 if omitted.
          - `keywords` union
            - string[]: Legacy flat list of keyword tokens (OR-matched across every keyword index field for the category).
            - object: Per-field map of keyword tokens. Each property name is a keyword index field; each value is the list of tokens to OR-match within that field. Records must have at least one matching token in EACH selected field — fields act as additional filters. Example: `{ "objection_type": ["security"], "buying_stage": ["consideration"] }`.
    - `skip_owned_leads` boolean: If set, the lead finder will skip leads that are owned by the user
    - `show_one_lead_per_company` boolean: If set, the lead finder will show only one lead per company
    - `location_mode` 'contact' | 'company': Whether to filter/display by contact location or company HQ location. Defaults to contact.
  - `search_name` string: Name of the search
  - `work_email_enrichment` boolean: Enable work email enrichment
  - `fully_enriched_profile` boolean: Enable LinkedIn profile enrichment
  - `custom_flow` string[]: Ordered list of providers for waterfall enrichment (enabled platforms only). When sent, it must be a non-empty list of distinct provider ids, spelled exactly as one of: instantly, findymail, leadmagic, icypeas, prospeo, contactout, wiza, bettercontact. An empty list, a repeated id or any other value is refused with a 400 that names each invalid entry.
  - `signal_enrichment` union[]: Signal categories to enrich. Accepts the legacy plain-string form and the richer per-signal form with a freshness window and optional keyword filter. Matching signal records are fetched for the lead and written into the lead payload under the signal_category key.
    - union
      - 'linkedin_post_company' | 'linkedin_post_contact' | 'linkedin_comment' | 'twitter_post_company' | 'twitter_post_contact' | 'youtube_company' | 'youtube_contact' | 'reddit_buying_intent' | 'reddit_pain_point' | 'reddit_churn_risk' | 'reddit_competitor_mention' | 'glassdoor_negative' | 'glassdoor_positive' | 'website_product_launch' | 'website_pricing_change' | 'website_expansion' | 'website_executive_change' | 'website_funding' | 'website_partnership' | 'website_compliance' | 'website_technology_adoption' | 'job_change' | 'promotion' | 'work_anniversary' | 'traffic_surge' | 'traffic_decline': Signal category name. Uses the default 30-day freshness window and no keyword filter.
      - object
        - `key` 'linkedin_post_company' | 'linkedin_post_contact' | 'linkedin_comment' | 'twitter_post_company' | 'twitter_post_contact' | 'youtube_company' | 'youtube_contact' | 'reddit_buying_intent' | 'reddit_pain_point' | 'reddit_churn_risk' | 'reddit_competitor_mention' | 'glassdoor_negative' | 'glassdoor_positive' | 'website_product_launch' | 'website_pricing_change' | 'website_expansion' | 'website_executive_change' | 'website_funding' | 'website_partnership' | 'website_compliance' | 'website_technology_adoption' | 'job_change' | 'promotion' | 'work_anniversary' | 'traffic_surge' | 'traffic_decline', required: Signal category to enrich.
        - `period_days` integer: Freshness window in days. Only signals whose most recent record is within this window are attached to the lead payload. Defaults to 30 if omitted. A zero, negative or fractional value is rejected rather than silently falling back to the default.
        - `keywords` union
          - string[]: Legacy flat list (OR-matched across every keyword index field for the category).
          - object: Per-field map: each property is a keyword index field; tokens within a field are OR-matched, and fields act as additional filters (records must hit at least one token per selected field). Example: `{ "objection_type": ["security"], "buying_stage": ["consideration"] }`.
  - `resource_id` string, uuid: ID of the list to target. A list is automatically created if not provided.
  - `auto_update` boolean: Whether to auto-update new leads
  - `skip_rows_without_email` boolean: Whether to skip leads without email
  - `list_name` string: Name for new list if resource_id not provided
  - `limit` integer, required: Maximum number of leads to import
  - `ai_enrichment` object: AI enrichment configuration. Keys are output column names, values are enrichment details.

## Response `200`

Default Response

- object
  - `id` string, required: Unique identifier for the enrichment
  - `organization_id` string, uuid, required: Organization ID that created this enrichment
  - `resource_id` string, uuid, required: ID of the list
  - `resource_type` 1 | 2: Resource type: 1=Campaign, 2=List (default)
  - `search_filters` object: The search filters used for enrichment
  - `limit` number: Maximum number of leads to import
  - `list_name` string: Name of the list created
  - `custom_flow` string[]: Custom flow to apply to the enrichment
  - `background_job_id` string, nullable: Identifier of an associated background import job, when one is spawned. `null` when no background job was created for this request.
  - `live_list_workflow_id` string, nullable: Deprecated: always `null`. Live lists are retired — use a Lead Finder Agent instead.

## Other responses

- `401`: This request is unauthorized (either the Authorization header is missing or invalid, or the API key has been revoked)
- `402`: Default Response
- `403`: The workspace has reached its plan lead limit, in which case `leadsRemaining` and `leadsRequested` are present and `error` is "Lead limit reached"; or the request used a search filter the workspace does not have access to, in which case those two fields are absent and `message` explains why.
- `404`: Default Response
- `409`: Default Response
- `429`: You have exceeded the rate limit. Please check the rate limit docs for more information.

## Changes

- **2026-11-03** `c781051105a8`: 8 breaking, 1 warning, 25 info
  - removed `subschema #1, subschema #2` from the `search_filters/employeeCount/items/` request property `oneOf` list
  - removed `subschema #1, subschema #2` from the `search_filters/locations` request property `oneOf` list
  - removed `subschema #1, subschema #2` from the `search_filters/signals/items/` request property `oneOf` list
  - removed `subschema #1, subschema #2` from the `signal_enrichment/items/` request property `oneOf` list
  - …30 more

[Operation history](https://skmtc.dev/instantly/apis/api-explorer/changes/api/v2/supersearch-enrichment/enrich-leads-from-supersearch/post.md)

---

[API](https://skmtc.dev/instantly/apis/api-explorer.md) - [All operations](https://skmtc.dev/instantly/apis/api-explorer/llms.txt) - [OpenAPI document](https://skmtc.dev/instantly/apis/api-explorer/revisions/adcd5b3299da?raw)
