> ## Documentation Index
> Fetch the complete documentation index at: https://docs.influship.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Find Similar Creators

> Find creators similar to provided seed creators using AI-powered similarity matching. Analyzes content themes, audience overlap, posting style, and engagement patterns.

**Use cases:**
- Expand campaigns with creators similar to proven performers
- Find alternatives when preferred creators are unavailable
- Discover emerging creators in the same niche

**How it works:**
1. Provide 1-10 seed creators (by ID or platform/username)
2. Optionally weight seeds to prioritize certain creators
3. Get ranked results with similarity scores and shared traits

If none of the supplied seeds is available for similarity matching, the endpoint returns `404 seed_not_found`. Choose another seed instead of retrying the same request.

Also callable as the `find_lookalike_creators` MCP tool — see [the MCP server guide](/guides/mcp-server) for setup.

**Pricing**: 1.5 credits per creator returned ($0.015)



## OpenAPI

````yaml /openapi/openapi.documented.yml post /v1/creators/lookalike
openapi: 3.1.0
info:
  title: Influship API
  version: 1.0.0
  description: >
    Public API for creator search, profile lookup, and campaign-fit analysis.


    ## Authentication


    Send your API key in the `X-API-Key` header on every authenticated request.


    ```bash

    curl -H "X-API-Key: your_api_key"
    https://api.influship.com/v1/creators/autocomplete?q=fitness

    ```


    ## Billing and Rate Limits


    The API uses credit-based billing and credit-based rate limits.


    - every endpoint has a credit cost

    - successful responses include `X-Credits-Charged` and `X-Credits-Features`

    - rate limits are enforced with per-minute and per-hour credit budgets

    - rate limit state is returned in the `RateLimit-*` headers


    ## Agentic Payments


    Use `https://api.influship.com/openapi.json` to discover endpoints that
    accept x402 v2 or MPP payments without an API key. It includes `402` payment
    challenges and `x-payment-info` metadata for the available payment methods.


    ## Pagination


    List endpoints use cursor pagination.


    - send `limit` to control page size

    - use `next_cursor` from the response to fetch the next page

    - stop when `has_more` is `false`


    Search has one special rule:


    - `POST /v1/search` creates a persisted search session

    - `GET /v1/search/{id}` paginates that session for free

    - free pagination is capped by the original search `limit`


    ## Errors


    Errors use a consistent shape:


    ```json

    {
      "error": {
        "code": "rate_limit_exceeded",
        "message": "Rate limit exceeded (per minute)"
      }
    }

    ```


    See each operation for exact request and response schemas.
  contact:
    name: Influship Support
    email: support@influship.com
  license:
    name: Proprietary
    url: https://influship.com/terms
servers:
  - url: https://api.influship.com
    description: Production
security:
  - ApiKeyAuth: []
tags:
  - name: Shortlists
    description: Private creator shortlists saved to your API account or OAuth user.
  - name: Health
    description: API health and status endpoints
  - name: Creators
    description: >-
      Retrieve creator profiles and discover new creators through search,
      autocomplete, and lookalike matching. Creators are cross-platform entities
      that may have profiles on multiple social networks.
  - name: Profiles
    description: >-
      Access individual social media profiles with detailed metrics, growth
      data, and activity information. Profiles are platform-specific accounts
      linked to creators.
  - name: Creator Emails
    description: >-
      Look up known creator email addresses by creator ID or social username.
      Empty or unresolved results are not billable.
  - name: Posts
    description: >-
      Retrieve and analyze social media posts with engagement metrics, media
      content, and performance data.
  - name: Search
    description: >-
      AI-powered semantic search to find creators using natural language
      queries. Understands intent and context to match creators based on content
      themes, audience, and style.
  - name: Live Scraping
    description: >-
      Research Instagram, TikTok, and YouTube profiles, content, metrics, and
      transcripts with live platform endpoints.
paths:
  /v1/creators/lookalike:
    post:
      tags:
        - Creators
      summary: Find Similar Creators
      description: >-
        Find creators similar to provided seed creators using AI-powered
        similarity matching. Analyzes content themes, audience overlap, posting
        style, and engagement patterns.


        **Use cases:**

        - Expand campaigns with creators similar to proven performers

        - Find alternatives when preferred creators are unavailable

        - Discover emerging creators in the same niche


        **How it works:**

        1. Provide 1-10 seed creators (by ID or platform/username)

        2. Optionally weight seeds to prioritize certain creators

        3. Get ranked results with similarity scores and shared traits


        If none of the supplied seeds is available for similarity matching, the
        endpoint returns `404 seed_not_found`. Choose another seed instead of
        retrying the same request.


        Also callable as the `find_lookalike_creators` MCP tool — see [the MCP
        server guide](/guides/mcp-server) for setup.


        **Pricing**: 1.5 credits per creator returned ($0.015)
      operationId: findLookalikeCreators
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LookalikeRequest'
        description: Find similar creators request
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LookalikeResponse'
        '400':
          description: Validation error response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error400'
        '401':
          description: Authentication error response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error401'
        '402':
          description: >-
            Account billing requires attention, or available credits cannot
            cover this request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiCreditError402'
        '403':
          description: Permission error response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error403'
        '404':
          description: Not found error response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error404'
        '429':
          description: >-
            Rate limit exceeded response. Check Retry-After header for backoff
            timing. Also returned (without RateLimit-* headers) when an IP is
            temporarily blocked after repeated failed authentication attempts.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error429'
        '500':
          description: Internal server error response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error500'
        '502':
          description: >-
            The API could not complete the analysis for a valid request. The
            failure is reported automatically.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AIServiceError502'
        '503':
          description: >-
            Service temporarily unavailable. Check Retry-After when present and
            retry with bounded backoff.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error503'
      x-codeSamples:
        - lang: JavaScript
          source: >-
            import Influship from 'influship';


            const client = new Influship({
              apiKey: process.env['INFLUSHIP_API_KEY'], // This is the default and can be omitted
            });


            // Automatically fetches more pages as needed.

            for await (const creatorLookalikeResponse of
            client.creators.lookalike({ seeds: [{}] })) {
              console.log(creatorLookalikeResponse.creator);
            }
components:
  schemas:
    LookalikeRequest:
      type: object
      properties:
        seeds:
          minItems: 1
          maxItems: 10
          type: array
          items:
            $ref: '#/components/schemas/LookalikeSeed'
          description: Seed creators to find similar creators for
        filters:
          $ref: '#/components/schemas/CommonFilters'
          description: Additional filters
        limit:
          default: 25
          description: Maximum results to return
          example: 25
          type: integer
          minimum: 1
          maximum: 100
        cursor:
          description: Pagination cursor for next page
          type: string
      required:
        - seeds
      description: Find similar creators request
      examples:
        - seeds:
            - platform: instagram
              username: fitness_coach_jane
          limit: 20
        - seeds:
            - creator_id: 123e4567-e89b-12d3-a456-426614174000
              weight: 1
            - platform: instagram
              username: wellness_guru
              weight: 0.5
          filters:
            followers:
              min: 25000
          limit: 25
    LookalikeResponse:
      type: object
      properties:
        data:
          $ref: '#/components/schemas/LookalikeResponseData'
        has_more:
          type: boolean
          description: Whether more results are available
          example: true
        next_cursor:
          type:
            - string
            - 'null'
          description: Cursor for the next page
          example: eyJvZmZzZXQiOjI1fQ==
      required:
        - data
        - has_more
        - next_cursor
      additionalProperties: false
    Error400:
      $ref: '#/components/schemas/Error'
      description: Validation error response
      examples:
        - error:
            code: validation_error
            message: 'Invalid value for parameter ''limit'': must be between 1 and 100'
            param: limit
            request_id: 550e8400-e29b-41d4-a716-446655440000
    Error401:
      $ref: '#/components/schemas/Error'
      description: Authentication error response
      examples:
        - error:
            code: unauthorized
            message: API key missing or invalid
            request_id: 550e8400-e29b-41d4-a716-446655440000
    ApiCreditError402:
      anyOf:
        - $ref: '#/components/schemas/Error402'
        - $ref: '#/components/schemas/ErrorInsufficientCredits'
      description: >-
        Account billing requires attention, or available credits cannot cover
        this request.
    Error403:
      $ref: '#/components/schemas/Error'
      description: Permission error response
      examples:
        - error:
            code: forbidden
            message: Your plan does not include access to this endpoint
            request_id: 550e8400-e29b-41d4-a716-446655440000
    Error404:
      $ref: '#/components/schemas/Error'
      description: Not found error response
      examples:
        - error:
            code: not_found
            message: Creator with ID '123e4567-e89b-12d3-a456-426614174000' not found
            request_id: 550e8400-e29b-41d4-a716-446655440000
    Error429:
      $ref: '#/components/schemas/Error'
      description: >-
        Rate limit exceeded response. Check Retry-After header for backoff
        timing. Also returned (without RateLimit-* headers) when an IP is
        temporarily blocked after repeated failed authentication attempts.
      examples:
        - error:
            code: rate_limit_exceeded
            message: Rate limit exceeded (per minute)
            request_id: 550e8400-e29b-41d4-a716-446655440000
        - error:
            code: rate_limit_exceeded
            message: Rate limit exceeded (per hour)
            request_id: 550e8400-e29b-41d4-a716-446655440001
        - error:
            code: rate_limit_exceeded
            message: Too many failed authentication attempts. Please try again later.
            request_id: 550e8400-e29b-41d4-a716-446655440002
    Error500:
      $ref: '#/components/schemas/Error'
      description: Internal server error response
      examples:
        - error:
            code: internal_error
            message: An unexpected error occurred. Please try again later.
            request_id: 550e8400-e29b-41d4-a716-446655440000
    AIServiceError502:
      $ref: '#/components/schemas/Error'
      description: >-
        The API could not complete the analysis for a valid request. The failure
        is reported automatically.
      examples:
        - error:
            code: service_unavailable
            message: The API could not complete the analysis
            request_id: 550e8400-e29b-41d4-a716-446655440000
    Error503:
      $ref: '#/components/schemas/Error'
      description: >-
        Service temporarily unavailable. Check Retry-After when present and
        retry with bounded backoff.
      examples:
        - error:
            code: service_unavailable
            message: >-
              Live Instagram data is temporarily unavailable. Please retry
              shortly.
            request_id: 550e8400-e29b-41d4-a716-446655440000
            details:
              retry_after_seconds: 60
              upstream_error: upstream_rate_limited
    LookalikeSeed:
      type: object
      properties:
        creator_id:
          description: Creator ID (use this OR platform+username)
          example: 123e4567-e89b-12d3-a456-426614174000
          type: string
          format: uuid
          pattern: >-
            ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
        platform:
          $ref: '#/components/schemas/Platform'
          description: Platform (required with username)
        username:
          description: Username (required with platform)
          example: fitness_coach_jane
          type: string
          minLength: 1
          maxLength: 50
        weight:
          default: 1
          description: Weight for this seed (0-1)
          example: 1
          type: number
          minimum: 0
          maximum: 1
      description: Seed creator for lookalike search
    CommonFilters:
      type: object
      properties:
        followers:
          $ref: '#/components/schemas/FollowersFilter'
          description: Filter by follower count
        engagement_rate:
          $ref: '#/components/schemas/EngagementRateFilter'
          description: Filter by engagement rate
        verified:
          description: Filter by verified status
          example: true
          type: boolean
      description: Common filters for creator discovery
    LookalikeResponseData:
      type: array
      items:
        $ref: '#/components/schemas/LookalikeResultItem'
    Error:
      type: object
      properties:
        error:
          type: object
          properties:
            code:
              $ref: '#/components/schemas/ErrorCode'
              description: Machine-readable error code
            message:
              type: string
              description: Human-readable error message
              example: Request validation failed
            status_code:
              description: >-
                HTTP status code repeated for clients that consume the error
                body
              example: 402
              type: integer
              minimum: -9007199254740991
              maximum: 9007199254740991
            param:
              description: Parameter that caused the error (if applicable)
              example: query
              type: string
            request_id:
              description: >-
                Optional request ID for debugging. Read the X-Request-Id
                response header when absent.
              example: 550e8400-e29b-41d4-a716-446655440000
              type: string
            details:
              description: Structured error context (e.g., field-level validation issues)
              type: object
              propertyNames:
                type: string
              additionalProperties: {}
          required:
            - code
            - message
          additionalProperties: false
      required:
        - error
      additionalProperties: false
    Error402:
      type: object
      properties:
        error:
          type: object
          properties:
            code:
              type: string
              const: payment_required
            message:
              type: string
            status_code:
              type: number
              const: 402
            reason_code:
              type: string
              enum:
                - BILLING_SUSPENDED
                - PAYMENT_FAILED
                - PAYMENT_ACTION_REQUIRED
                - DISPUTE_OPENED
                - NO_PAYMENT_METHOD
                - SUBSCRIPTION_REQUIRED
                - NO_BUNDLE_CONFIGURED
                - BUNDLE_EXHAUSTED
            next_step:
              type: string
              enum:
                - update_payment_method
                - complete_authentication
                - contact_support
                - add_payment_method
                - reconnect_connection
                - upgrade_plan
            request_id:
              type: string
            details:
              type: object
              propertyNames:
                type: string
              additionalProperties: {}
          required:
            - code
            - message
            - status_code
            - reason_code
            - next_step
          additionalProperties: false
      required:
        - error
      additionalProperties: false
      description: >-
        Payment required response. Returned when account billing or a
        subscription bundle requires attention.
      examples:
        - error:
            code: payment_required
            message: Payment authentication is required.
            status_code: 402
            reason_code: PAYMENT_ACTION_REQUIRED
            next_step: complete_authentication
            request_id: 550e8400-e29b-41d4-a716-446655440000
    ErrorInsufficientCredits:
      type: object
      properties:
        error:
          type: object
          properties:
            code:
              type: string
              const: insufficient_credits
            message:
              type: string
            status_code:
              type: number
              const: 402
            request_id:
              type: string
            details:
              type: object
              propertyNames:
                type: string
              additionalProperties: {}
          required:
            - code
            - message
          additionalProperties: false
      required:
        - error
      additionalProperties: false
      description: >-
        Remaining credits cannot cover this request. Add a payment method to
        continue. Do not retry automatically.
      examples:
        - error:
            code: insufficient_credits
            message: >-
              Not enough credits remaining for this search. Add a payment method
              to continue.
            details:
              remaining: 10
              required: 75
              add_payment_method: true
    Platform:
      type: string
      enum:
        - instagram
      description: Social media platform
      example: instagram
    FollowersFilter:
      type: object
      properties:
        min:
          description: Minimum follower count
          example: 10000
          type: number
          minimum: 0
        max:
          description: Maximum follower count
          example: 500000
          type: number
          minimum: 0
      description: Filter by follower count range
    EngagementRateFilter:
      type: object
      properties:
        min:
          description: Minimum engagement rate (%)
          example: 1.5
          type: number
          minimum: 0
          maximum: 100
        max:
          description: Maximum engagement rate (%)
          example: 10
          type: number
          minimum: 0
          maximum: 100
      description: Filter by engagement rate range
    LookalikeResultItem:
      type: object
      properties:
        creator:
          $ref: '#/components/schemas/CreatorBasic'
        primary_profile:
          anyOf:
            - $ref: '#/components/schemas/ProfileSummary'
            - type: 'null'
          description: >-
            Primary profile (largest audience, null if no profile data
            available)
        similarity:
          $ref: '#/components/schemas/SimilarityInfo'
      required:
        - creator
        - primary_profile
        - similarity
      additionalProperties: false
    ErrorCode:
      type: string
      enum:
        - validation_error
        - invalid_parameter
        - missing_parameter
        - unauthorized
        - forbidden
        - payment_required
        - insufficient_credits
        - not_found
        - rate_limit_exceeded
        - quota_exceeded
        - internal_error
        - service_unavailable
        - upstream_contract_broken
        - database_error
        - seed_not_found
        - invalid_seeds
        - seed_resolution_failed
        - lookalike_failed
        - get_profiles_failed
        - post_analysis_failed
        - match_failed
        - scraping_failed
        - transcript_unavailable
        - transcript_not_available
        - transcription_limit_exceeded
        - transcription_unavailable
      description: Machine-readable error code for programmatic handling
      example: validation_error
    CreatorBasic:
      type: object
      properties:
        id:
          type: string
          format: uuid
          pattern: >-
            ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
          description: Creator unique identifier
          example: 123e4567-e89b-12d3-a456-426614174000
        name:
          type: string
          description: Creator display name
          example: Jane Fitness
        bio:
          type:
            - string
            - 'null'
          description: Creator bio
          example: Fitness coach & wellness advocate
        avatar_url:
          type:
            - string
            - 'null'
          description: Avatar URL
          example: https://cdn.example.com/avatars/jane.jpg
      required:
        - id
        - name
        - bio
        - avatar_url
      additionalProperties: false
      description: Basic creator information
    ProfileSummary:
      type: object
      properties:
        id:
          type: string
          format: uuid
          pattern: >-
            ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
          description: Profile unique identifier
          example: 123e4567-e89b-12d3-a456-426614174000
        platform:
          $ref: '#/components/schemas/Platform'
        username:
          type: string
          description: Profile username
          example: fitness_coach_jane
        url:
          type: string
          format: uri
          description: Profile URL
          example: https://www.instagram.com/fitness_coach_jane
        followers:
          type:
            - integer
            - 'null'
          minimum: 0
          maximum: 9007199254740991
          description: Follower count (null if unknown)
          example: 125000
        engagement_rate:
          type:
            - number
            - 'null'
          minimum: 0
          description: >-
            Engagement rate as a percentage, null if unknown (e.g. 3.5 means
            3.5%)
          example: 3.5
        is_verified:
          type: boolean
          description: Whether the account is verified
          example: true
        data_updated_at:
          type:
            - string
            - 'null'
          format: date-time
          pattern: >-
            ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
          description: When the stored public profile data was last refreshed
          example: '2026-07-20T12:00:00.000+00:00'
      required:
        - id
        - platform
        - username
        - url
        - followers
        - engagement_rate
        - is_verified
        - data_updated_at
      additionalProperties: false
      description: Abbreviated profile information
    SimilarityInfo:
      type: object
      properties:
        score:
          type: number
          minimum: 0
          maximum: 1
          description: Similarity score (0-1)
          example: 0.78
        shared_traits:
          type: array
          items:
            type: string
          description: Shared traits with seed creators
          example:
            - Similar content style
            - Same niche audience
      required:
        - score
        - shared_traits
      additionalProperties: false
      description: Similarity information for lookalike match
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: X-API-Key

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.