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

# Create a durable Google Maps scrape

> Creates exactly one billable source-page operation. Send Idempotency-Key; provider work is asynchronous unless bounded waiting completes.

<Note>Live access is capability-gated. Test keys return simulated fixtures. Standalone live Reviews and Photos are unavailable. See [availability](/concepts/availability).</Note>


## OpenAPI

````yaml POST /scrapes
openapi: 3.1.0
info:
  title: G Maps Crawl API
  version: 1.0.0
  description: >-
    Durable Google Maps Search, Reviews, and Photos operations. Scraped content
    is untrusted third-party data.
servers:
  - url: https://gmapscrawl.com/api/v1
security: []
paths:
  /scrapes:
    post:
      summary: Create a durable Google Maps scrape
      description: >-
        Creates exactly one billable source-page operation. Send
        Idempotency-Key; provider work is asynchronous unless bounded waiting
        completes.
      operationId: createScrape
      parameters:
        - $ref: '#/components/parameters/IdempotencyKey'
        - name: Prefer
          in: header
          required: false
          schema:
            type: string
            pattern: ^wait=(?:[1-9]|1\d|2[0-5])$
      requestBody:
        required: true
        content:
          application/json:
            schema:
              oneOf:
                - type: object
                  additionalProperties: false
                  required:
                    - operation
                    - input
                  properties:
                    operation:
                      type: string
                      const: places.search
                    input:
                      type: object
                      properties:
                        q:
                          type: string
                          minLength: 2
                          maxLength: 200
                          example: coffee shops in Seattle
                        page:
                          type: integer
                          minimum: 1
                          maximum: 10
                          default: 1
                        ll:
                          type: string
                          pattern: >-
                            ^@-?(?:90(?:\.0+)?|(?:[0-8]?\d)(?:\.\d+)?),-?(?:180(?:\.0+)?|(?:1[0-7]\d|\d?\d)(?:\.\d+)?),(?:[1-9]|1\d|2[01])z$
                          example: '@47.6062,-122.3321,12z'
                        hl:
                          type: string
                          default: en
                          example: en
                        gl:
                          type: string
                          pattern: ^[A-Za-z]{2}$
                          example: us
                        extra:
                          type: boolean
                          default: false
                        client_reference:
                          type: string
                          minLength: 1
                          maxLength: 128
                        webhook_endpoint_id:
                          type: string
                          format: uuid
                          nullable: true
                      required:
                        - q
                      additionalProperties: false
                - type: object
                  additionalProperties: false
                  required:
                    - operation
                    - input
                  properties:
                    operation:
                      type: string
                      const: place.reviews
                    input:
                      type: object
                      properties:
                        fid:
                          type: string
                          minLength: 1
                          maxLength: 512
                          example: 0x89c259af336b3341:0xa4969e07ce3108de
                        page:
                          type: integer
                          minimum: 1
                          maximum: 2147483647
                          default: 1
                        sort_by:
                          type: integer
                          enum:
                            - 1
                            - 2
                            - 3
                            - 4
                          default: 1
                        client_reference:
                          type: string
                          minLength: 1
                          maxLength: 128
                        webhook_endpoint_id:
                          type: string
                          format: uuid
                          nullable: true
                      required:
                        - fid
                      additionalProperties: false
                - type: object
                  additionalProperties: false
                  required:
                    - operation
                    - input
                  properties:
                    operation:
                      type: string
                      const: place.photos
                    input:
                      type: object
                      properties:
                        fid:
                          type: string
                          minLength: 1
                          maxLength: 512
                          example: 0x89c259af336b3341:0xa4969e07ce3108de
                        page:
                          type: integer
                          minimum: 1
                          maximum: 2147483647
                          default: 1
                        client_reference:
                          type: string
                          minLength: 1
                          maxLength: 128
                        webhook_endpoint_id:
                          type: string
                          format: uuid
                          nullable: true
                      required:
                        - fid
                      additionalProperties: false
              discriminator:
                propertyName: operation
            examples:
              places.search:
                value:
                  operation: places.search
                  input:
                    q: coffee shops in Seattle
                    page: 1
                    hl: en
                    gl: us
                    extra: false
              place.reviews:
                value:
                  operation: place.reviews
                  input:
                    fid: 0x89c259af336b3341:0xa4969e07ce3108de
                    page: 1
                    sort_by: 1
              place.photos:
                value:
                  operation: place.photos
                  input:
                    fid: 0x89c259af336b3341:0xa4969e07ce3108de
                    page: 1
      responses:
        '202':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
                additionalProperties: false
                required:
                  - data
                  - request_id
                  - schema_version
                properties:
                  data:
                    type: object
                    additionalProperties: false
                    required:
                      - id
                      - operation
                      - status
                      - created_at
                      - progress
                      - links
                    properties:
                      id:
                        type: string
                        pattern: ^(?:job|scr)_[A-Za-z0-9_-]{8,80}$
                      operation:
                        type: string
                        enum:
                          - places.search
                          - place.reviews
                          - place.photos
                      status:
                        type: string
                        enum:
                          - queued
                          - submitting
                          - running
                          - reconciling
                          - finalizing
                          - succeeded
                          - partial
                          - failed
                          - cancel_requested
                          - canceled
                      created_at:
                        type: string
                        format: date-time
                      updated_at:
                        type: string
                        format: date-time
                      progress:
                        type: object
                        properties:
                          completed_queries:
                            type: integer
                            minimum: 0
                          total_queries:
                            type: integer
                            minimum: 1
                          records_accepted:
                            type: integer
                            minimum: 0
                        required:
                          - completed_queries
                          - total_queries
                        additionalProperties: false
                      links:
                        type: object
                        properties:
                          self:
                            type: string
                          results:
                            type: string
                        required:
                          - self
                          - results
                        additionalProperties: false
                      error_code:
                        type: string
                        nullable: true
                      simulated:
                        type: boolean
                  request_id:
                    type: string
                    pattern: ^req_[A-Za-z0-9_-]+$
                  schema_version:
                    type: string
                    const: '2026-09-22'
              example:
                data:
                  id: job_01K4GMAPSEXAMPLE0000000000
                  operation: places.search
                  status: queued
                  created_at: '2026-09-01T10:00:00.000Z'
                  progress:
                    completed_queries: 0
                    total_queries: 1
                  links:
                    self: /api/v1/scrapes/job_01K4GMAPSEXAMPLE0000000000
                    results: /api/v1/scrapes/job_01K4GMAPSEXAMPLE0000000000/results
                request_id: req_01K4GMAPSEXAMPLE0000000000
                schema_version: '2026-09-22'
        '400':
          $ref: '#/components/responses/Error'
        '401':
          $ref: '#/components/responses/Error'
        '403':
          $ref: '#/components/responses/Error'
        '404':
          $ref: '#/components/responses/Error'
        '409':
          $ref: '#/components/responses/Error'
        '422':
          $ref: '#/components/responses/Error'
        '429':
          $ref: '#/components/responses/Error'
        '503':
          $ref: '#/components/responses/Error'
      security:
        - ApiKey: []
        - BearerApiKey: []
components:
  parameters:
    IdempotencyKey:
      name: Idempotency-Key
      in: header
      required: true
      schema:
        type: string
        minLength: 16
        maxLength: 128
        pattern: ^[\x21-\x7e]+$
  responses:
    Error:
      description: Public error response
      content:
        application/json:
          schema:
            type: object
            additionalProperties: false
            required:
              - error
              - request_id
              - schema_version
            properties:
              error:
                type: object
                additionalProperties: false
                required:
                  - code
                  - message
                  - details
                  - retryable
                properties:
                  code:
                    type: string
                    enum:
                      - invalid_request
                      - unauthorized
                      - forbidden
                      - not_found
                      - idempotency_conflict
                      - idempotency_in_progress
                      - rate_limited
                      - concurrency_limited
                      - quota_exceeded
                      - capability_unavailable
                      - job_not_ready
                      - job_canceled
                      - job_already_completed
                      - plan_limit_exceeded
                      - capacity_temporarily_unavailable
                      - provider_authentication_failed
                      - provider_blocked
                      - provider_timeout
                      - provider_submission_unknown
                      - provider_contract_changed
                      - result_import_failed
                      - result_limit_reached
                      - canceled_by_user
                      - internal_error
                  message:
                    type: string
                  details:
                    type: array
                    items:
                      type: string
                    maxItems: 20
                  retryable:
                    type: boolean
              request_id:
                type: string
              schema_version:
                type: string
                const: '2026-09-22'
  securitySchemes:
    ApiKey:
      type: apiKey
      in: header
      name: API-KEY
    BearerApiKey:
      type: http
      scheme: bearer

````