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

# Execute an API endpoint (POST)

> Call a generated API endpoint by scraper ID and endpoint name. Pass endpoint parameters in the JSON body.



## OpenAPI

````yaml /openapi.json post /scraper/{scraper_id}/{endpoint_name}
openapi: 3.1.0
info:
  title: Parse API
  description: Programmatic API for creating, managing, and executing web scraping APIs.
  version: 2.0.0
servers:
  - url: https://api.parse.bot
    description: Production
security:
  - ApiKeyAuth: []
tags:
  - name: Execute
    description: Call the endpoints of an API you've built — the most common operation
  - name: Marketplace
    description: >-
      Browse and search the public marketplace of pre-built APIs (no auth
      required)
  - name: Dispatch
    description: Create and manage scraping APIs
  - name: Export
    description: Export API specs in standard formats
  - name: Updates
    description: Check and merge upstream improvements to your APIs
paths:
  /scraper/{scraper_id}/{endpoint_name}:
    post:
      tags:
        - Execute
      summary: Execute an API endpoint (POST)
      description: >-
        Call a generated API endpoint by scraper ID and endpoint name. Pass
        endpoint parameters in the JSON body.
      operationId: run_scraper_endpoint
      parameters:
        - name: scraper_id
          in: path
          required: true
          schema:
            type: string
        - name: endpoint_name
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              additionalProperties: true
              description: >-
                Endpoint-specific parameters (see the endpoint's input_params
                for the schema)
            example:
              page: 1
      responses:
        '200':
          description: >-
            Success — the endpoint's own JSON (shape defined by its
            return_schema).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ScraperRunResponse'
              example:
                title: A Light in the Attic
                price: 51.77
                rating: 3
        '422':
          $ref: '#/components/responses/StaleInput'
        '429':
          $ref: '#/components/responses/RateLimited'
        '500':
          $ref: '#/components/responses/ScraperError'
        '502':
          $ref: '#/components/responses/UpstreamError'
        '503':
          $ref: '#/components/responses/Blocked'
components:
  schemas:
    ScraperRunResponse:
      type: object
      description: >-
        On success (HTTP 200) the body is the endpoint's own JSON — the shape
        described by its return_schema — not a fixed wrapper. This generic
        schema documents the fallback fields present when output can't be
        parsed. See the ExecutionError schema for non-2xx responses.
      additionalProperties: true
      properties:
        status:
          type: string
          description: >-
            Present on fallback/error envelopes; absent on a normal successful
            response (which is just the endpoint's data).
        scraper_id:
          type: string
        execution_time:
          type: number
          nullable: true
          description: Execution time in seconds
    ExecutionError:
      type: object
      description: >-
        Non-2xx execution envelope. `error` is either a string or an object
        whose `status` field (success/stale_input/upstream_error/blocked/error)
        tells you the failure category — see the Errors guide.
      properties:
        error:
          description: >-
            A message string, or a detail object with a machine-readable
            `status` and context.
        status_code:
          type: integer
  responses:
    StaleInput:
      description: >-
        422 — your input was invalid or the resource is gone upstream (`status:
        stale_input`). Fix the input and retry.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ExecutionError'
          example:
            error:
              status: stale_input
              kind: input_format_invalid
              message: trip_type must be 'one_way' or 'round_trip'
            status_code: 422
    RateLimited:
      description: 429 — rate limit exceeded. Honor the Retry-After header.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ExecutionError'
          example:
            error:
              error: Rate limit exceeded
              message: Too many requests in a short burst. Retry in 5s.
              limit_type: burst
              retry_after: 5
            status_code: 429
    ScraperError:
      description: >-
        500 — the scraper crashed or hit a bug (`status: error`). Not your
        fault; revise the API.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ExecutionError'
          example:
            error:
              status: error
              kind: scraper_bug
              message: >-
                The scraper crashed during execution. This could be due to bad
                input, broken scraper code, or a website update.
            status_code: 500
    UpstreamError:
      description: >-
        502 — the TARGET SITE returned a non-2xx (`status: upstream_error`).
        This is NOT a Parse outage; inspect upstream_status_code + snippet
        before retrying.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ExecutionError'
          example:
            error:
              status: upstream_error
              upstream_status_code: 404
              message: >-
                The target site returned HTTP 404. See `snippet` for the
                upstream response body.
              snippet: <html>Product not found</html>
              url: https://example.com/products/invalid-sku
            status_code: 502
    Blocked:
      description: >-
        503 — anti-bot blocked every proxy (`status: blocked`). Retry later only
        if retry_after is present.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ExecutionError'
          example:
            error:
              status: blocked
              block_type: datadome
              vendor: datadome
              kind: antibot_solvable
              attempts: 3
              retry_after: 60
              message: >-
                Service temporarily unavailable - site protection blocking all
                proxies
            status_code: 503
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: X-API-Key
      description: >-
        API key for programmatic access. Create one in the Parse dashboard at
        https://parse.bot (Settings → API Keys). Keys start with 'pmx_'.

````