Snov.io Domain Search API

Search for company information and email addresses by domain

OpenAPI Specification

snov-io-domain-search-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Snov.io Authentication Domain Search API
  description: Snov.io is a sales automation and lead generation platform. The REST API enables programmatic access to email finding, domain search, email verification, drip campaign management, email warm-up, prospect management, CRM pipeline, and webhook subscriptions. Authentication uses OAuth 2.0 client credentials to obtain short-lived Bearer tokens. All API operations consume credits from the account balance.
  version: '2.0'
  contact:
    name: Snov.io Support
    url: https://snov.io/knowledgebase/
  termsOfService: https://snov.io/terms-of-service/
  license:
    name: Proprietary
    url: https://snov.io/terms-of-service/
servers:
- url: https://api.snov.io
  description: Snov.io API server
tags:
- name: Domain Search
  description: Search for company information and email addresses by domain
paths:
  /v2/domain-search/start:
    post:
      tags:
      - Domain Search
      summary: Start domain search
      description: Initiate an async domain search. Returns a task_hash to retrieve results. Costs 1 credit per unique domain request.
      operationId: startDomainSearch
      security:
      - bearerAuth: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - domain
              properties:
                domain:
                  type: string
                  description: Company domain name to search
                  example: example.com
      responses:
        '200':
          description: Task started
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TaskStarted'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /v2/domain-search/result/{task_hash}:
    get:
      tags:
      - Domain Search
      summary: Get domain search results
      description: Retrieve results of a previously started domain search task.
      operationId: getDomainSearchResult
      security:
      - bearerAuth: []
      parameters:
      - $ref: '#/components/parameters/TaskHash'
      responses:
        '200':
          description: Domain search results
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DomainSearchResult'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
  /v2/domain-search/prospects/start:
    post:
      tags:
      - Domain Search
      summary: Start domain prospect search
      description: Initiate an async search for prospect profiles associated with a domain.
      operationId: startDomainProspectSearch
      security:
      - bearerAuth: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - domain
              properties:
                domain:
                  type: string
                  example: example.com
                positions:
                  type: array
                  items:
                    type: string
                  description: Filter by job positions
                  example:
                  - CEO
                  - CTO
                page:
                  type: integer
                  description: Page number for pagination
                  default: 1
      responses:
        '200':
          description: Task started
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TaskStarted'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /v2/domain-search/prospects/result/{task_hash}:
    get:
      tags:
      - Domain Search
      summary: Get domain prospect search results
      operationId: getDomainProspectSearchResult
      security:
      - bearerAuth: []
      parameters:
      - $ref: '#/components/parameters/TaskHash'
      responses:
        '200':
          description: Prospect search results
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProspectListResult'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /v2/domain-search/domain-emails/start:
    post:
      tags:
      - Domain Search
      summary: Start domain emails search
      description: Initiate an async search for all email addresses associated with a domain.
      operationId: startDomainEmailsSearch
      security:
      - bearerAuth: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - domain
              properties:
                domain:
                  type: string
                  example: example.com
      responses:
        '200':
          description: Task started
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TaskStarted'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /v2/domain-search/domain-emails/result/{task_hash}:
    get:
      tags:
      - Domain Search
      summary: Get domain emails search results
      operationId: getDomainEmailsSearchResult
      security:
      - bearerAuth: []
      parameters:
      - $ref: '#/components/parameters/TaskHash'
      responses:
        '200':
          description: Domain emails results
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EmailListResult'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /v2/domain-search/generic-contacts/start:
    post:
      tags:
      - Domain Search
      summary: Start generic contacts search
      description: Initiate an async search for generic company contact addresses (e.g. info@, support@).
      operationId: startGenericContactsSearch
      security:
      - bearerAuth: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - domain
              properties:
                domain:
                  type: string
                  example: example.com
      responses:
        '200':
          description: Task started
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TaskStarted'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /v2/domain-search/generic-contacts/result/{task_hash}:
    get:
      tags:
      - Domain Search
      summary: Get generic contacts search results
      operationId: getGenericContactsSearchResult
      security:
      - bearerAuth: []
      parameters:
      - $ref: '#/components/parameters/TaskHash'
      responses:
        '200':
          description: Generic contacts results
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EmailListResult'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /v1/get-domain-emails-count:
    post:
      tags:
      - Domain Search
      summary: Check available emails count (free)
      description: Returns the count of available email addresses for a domain. Free endpoint.
      operationId: getDomainEmailsCount
      security:
      - bearerAuth: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - domain
              properties:
                domain:
                  type: string
                  example: example.com
      responses:
        '200':
          description: Email count for domain
          content:
            application/json:
              schema:
                type: object
                properties:
                  domain:
                    type: string
                  result:
                    type: integer
                    description: Number of available emails
        '401':
          $ref: '#/components/responses/Unauthorized'
components:
  schemas:
    EmailListResult:
      type: object
      properties:
        status:
          type: string
        data:
          type: array
          items:
            type: object
            properties:
              email:
                type: string
                format: email
              first_name:
                type: string
              last_name:
                type: string
              position:
                type: string
              confidence:
                type: integer
    DomainSearchResult:
      type: object
      properties:
        status:
          type: string
        data:
          type: object
          properties:
            domain:
              type: string
            company_name:
              type: string
            industry:
              type: string
            size:
              type: string
            prospect_count:
              type: integer
            email_count:
              type: integer
            related_domains:
              type: array
              items:
                type: string
    TaskStarted:
      type: object
      properties:
        task_hash:
          type: string
          description: Unique identifier for the async task; use to poll for results
        status:
          type: string
          description: Current task status
    ProspectListResult:
      type: object
      properties:
        status:
          type: string
        data:
          type: array
          items:
            $ref: '#/components/schemas/ProspectProfile'
    Error:
      type: object
      properties:
        error:
          type: string
          description: Error code
        message:
          type: string
          description: Human-readable error message
    ProspectProfile:
      type: object
      properties:
        id:
          type: string
        first_name:
          type: string
        last_name:
          type: string
        email:
          type: string
          format: email
        position:
          type: string
        company:
          type: string
        location:
          type: string
        industry:
          type: string
        social:
          type: object
          properties:
            linkedin:
              type: string
              format: uri
            twitter:
              type: string
              format: uri
        job_history:
          type: array
          items:
            type: object
            properties:
              title:
                type: string
              company:
                type: string
              start_date:
                type: string
              end_date:
                type: string
  responses:
    Unauthorized:
      description: Unauthorized — missing or invalid Bearer token
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    NotFound:
      description: Resource not found
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  parameters:
    TaskHash:
      name: task_hash
      in: path
      required: true
      schema:
        type: string
      description: Task hash returned from the corresponding start endpoint
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: Obtain a Bearer token via POST /v1/oauth/access_token using client credentials. Tokens expire after 3600 seconds.