Import.io Extractor API

Create, configure, run, and manage web data extractors.

OpenAPI Specification

import-io-extractor-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Import.io Crawlrun Extractor API
  description: 'The Import.io API (v2.0) provides programmatic access to create, manage, and run

    web data extractors, retrieve crawl run results, and manage reports. Everything

    available in the Import.io UI can be accomplished via the API, including

    scheduling extractions, managing data pipelines, and exporting data in JSON,

    CSV, or Excel formats. Authenticated extraction is supported for data behind

    login screens.


    Authentication is performed by passing your API key as the `_apikey` query

    parameter on every request. You can find your API key in the Import.io

    dashboard under User Settings.

    '
  version: '2.0'
  contact:
    name: Import.io Support
    url: https://help.import.io/
  license:
    name: Proprietary
    url: https://www.import.io/terms-of-use/
servers:
- url: https://api.import.io
  description: Production API
security:
- apiKeyAuth: []
tags:
- name: Extractor
  description: Create, configure, run, and manage web data extractors.
paths:
  /extractors/:
    get:
      tags:
      - Extractor
      summary: List extractors
      description: Returns a paginated list of extractors owned by the authenticated user.
      operationId: listExtractors
      parameters:
      - $ref: '#/components/parameters/ApiKey'
      - $ref: '#/components/parameters/PerPage'
      - $ref: '#/components/parameters/Page'
      - $ref: '#/components/parameters/Sort'
      - $ref: '#/components/parameters/SortDirection'
      responses:
        '200':
          description: Array of extractors
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Extractor'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /extractors/{extractorId}:
    parameters:
    - $ref: '#/components/parameters/ExtractorId'
    - $ref: '#/components/parameters/ApiKey'
    get:
      tags:
      - Extractor
      summary: Get extractor
      description: Get information about a specific extractor.
      operationId: getExtractor
      responses:
        '200':
          description: Extractor details
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Extractor'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
    delete:
      tags:
      - Extractor
      summary: Archive extractor
      description: Archive (delete) an extractor. Data is retained in the database but the extractor is hidden from the UI and cannot be run.
      operationId: deleteExtractor
      responses:
        '200':
          description: Archived extractor
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Extractor'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
  /extractors/{extractorId}/inputs:
    parameters:
    - $ref: '#/components/parameters/ExtractorId'
    - $ref: '#/components/parameters/ApiKey'
    get:
      tags:
      - Extractor
      summary: Get extractor inputs
      description: Retrieve the current inputs configured for an extractor.
      operationId: getExtractorInputs
      responses:
        '200':
          description: Extractor inputs
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExtractorInputs'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
    put:
      tags:
      - Extractor
      summary: Update extractor inputs
      description: Update the inputs (URLs) configured for an extractor.
      operationId: updateExtractorInputs
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ExtractorInputs'
      responses:
        '200':
          description: Inputs updated
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/ServerError'
  /extractors/{extractorId}/start:
    post:
      tags:
      - Extractor
      summary: Start extractor
      description: Trigger an extractor to run.
      operationId: startExtractor
      parameters:
      - $ref: '#/components/parameters/ExtractorId'
      - $ref: '#/components/parameters/ApiKey'
      responses:
        '200':
          description: Extractor started
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/ServerError'
  /extractors/{extractorId}/stop:
    post:
      tags:
      - Extractor
      summary: Stop extractor
      description: Halt a running extractor.
      operationId: stopExtractor
      parameters:
      - $ref: '#/components/parameters/ExtractorId'
      - $ref: '#/components/parameters/ApiKey'
      responses:
        '200':
          description: Extractor stopped
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/ServerError'
  /extractors/{extractorId}/duplicate:
    post:
      tags:
      - Extractor
      summary: Duplicate extractor
      description: Create a copy of an existing extractor.
      operationId: duplicateExtractor
      parameters:
      - $ref: '#/components/parameters/ExtractorId'
      - $ref: '#/components/parameters/ApiKey'
      responses:
        '200':
          description: Duplicated extractor
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Extractor'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/ServerError'
  /extractors/{extractorId}/credentials:
    post:
      tags:
      - Extractor
      summary: Update extractor credentials
      description: Update the authentication credentials used by an extractor for sites behind login.
      operationId: updateExtractorCredentials
      parameters:
      - $ref: '#/components/parameters/ExtractorId'
      - $ref: '#/components/parameters/ApiKey'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Credentials'
      responses:
        '200':
          description: Credentials updated
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/ServerError'
components:
  schemas:
    Extractor:
      type: object
      properties:
        guid:
          type: string
          format: uuid
        name:
          type: string
        fields:
          type: array
          items:
            type: object
            additionalProperties: true
        tags:
          type: array
          items:
            type: string
        archived:
          type: boolean
        proxy:
          type: object
          additionalProperties: true
        webhooks:
          type: array
          items:
            type: object
            additionalProperties: true
        chainingConfig:
          type: object
          additionalProperties: true
        credentialsId:
          type: string
          format: uuid
        _meta:
          $ref: '#/components/schemas/Meta'
    Error:
      type: object
      properties:
        code:
          type: integer
          description: Internal error code.
        message:
          type: string
          description: Human-readable error description.
        error:
          type: string
          description: Deprecated error string.
          deprecated: true
    Meta:
      type: object
      description: Common metadata included on most resources.
      properties:
        createdAt:
          type: string
          format: date-time
        modifiedAt:
          type: string
          format: date-time
        ownerId:
          type: string
          format: uuid
        creatorId:
          type: string
          format: uuid
        editorId:
          type: string
          format: uuid
    ExtractorInputs:
      type: object
      properties:
        _url:
          type: string
          description: One or more URLs to extract data from. Multiple URLs may be newline-separated.
    Credentials:
      type: object
      required:
      - username
      - password
      properties:
        username:
          type: string
        password:
          type: string
          format: password
  responses:
    ServerError:
      description: Server error.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    Unauthorized:
      description: Authentication failed.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    NotFound:
      description: Resource not found.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    Forbidden:
      description: Forbidden.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  parameters:
    SortDirection:
      name: _sortDirection
      in: query
      required: false
      description: Sort direction.
      schema:
        type: string
        enum:
        - ASC
        - DESC
        default: DESC
    ApiKey:
      name: _apikey
      in: query
      required: true
      description: Your Import.io API key.
      schema:
        type: string
    Sort:
      name: _sort
      in: query
      required: false
      description: Field to sort by, e.g. `meta_created_at`.
      schema:
        type: string
    ExtractorId:
      name: extractorId
      in: path
      required: true
      description: Unique identifier of the extractor.
      schema:
        type: string
        format: uuid
    PerPage:
      name: _perpage
      in: query
      required: false
      description: Number of items to return per page.
      schema:
        type: integer
    Page:
      name: _page
      in: query
      required: false
      description: Page number to return (default 1).
      schema:
        type: integer
        default: 1
  securitySchemes:
    apiKeyAuth:
      type: apiKey
      in: query
      name: _apikey
      description: API key obtained from the Import.io dashboard User Settings.