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

# Search imaging centers

> Returns active imaging centers near an address. No referral is required.

`radius` defaults to 60 miles and is capped at 250. `limit` defaults to
10 and is capped at 100. Results are nearest first.

`procedures` is optional. Every procedure must be one the center can
perform. Each item is a CPT code, or a modality, body part, and contrast.
A CPT code matches when the center's compendium covers any catalog row
for that code.

Address only:

`GET /api/v2/locations/search?address=30301`

CPT code:

`GET /api/v2/locations/search?address=30301&procedures[][cpt_code]=70551`

Modality, body part, and contrast:

`GET /api/v2/locations/search?address=30301&procedures[][modality_id]=00000000-0000-0000-0000-000000000001&procedures[][body_part_id]=00000000-0000-0000-0000-000000000002&procedures[][contrast]=without_contrast`




## OpenAPI

````yaml /openapi.yaml get /api/v2/locations/search
openapi: 3.1.0
info:
  title: Scan.com API
  version: v2
  description: >-
    The Scan.com Partner API creates imaging referrals, schedules visits, and
    returns radiology reports.
servers:
  - url: https://api.staging.scan.com
    description: Sandbox
  - url: https://api.scan.com
    description: Production
security:
  - BearerAuth: []
tags:
  - name: Courier SSO
    description: >-
      Mint a one-time Courier portal SSO URL with the same Bearer token used for
      the rest of the API.
  - name: Webhooks
    description: >-
      Outbound HTTP POST notifications sent to your api_credentials.webhook_url
      when visit or notification status changes. Configure api_credentials on
      your LawFirm, Practice, CoordinationGroup, Insurance, Employer, or
      NurseCaseManagementGroup.
  - name: Order Documents
    description: >-
      Retrieve radiology report PDFs, DICOM imaging, and invoices for orders
      visible to the authenticated group.
  - name: Locations
    description: >-
      Search imaging centers near an address, or rank them for a referral after
      medical safety answers are on file. Partners submit a preferred center;
      Scan books the visit.
  - name: Testing
    description: Staging-only fixture bootstrap, status advancement, and test webhooks.
  - name: FHIR
    description: >-
      Opt-in FHIR R4 read shapes for DiagnosticReport and ImagingStudy. Not a
      FHIR server.
paths:
  /api/v2/locations/search:
    get:
      tags:
        - Locations
      summary: Search imaging centers
      description: >
        Returns active imaging centers near an address. No referral is required.


        `radius` defaults to 60 miles and is capped at 250. `limit` defaults to

        10 and is capped at 100. Results are nearest first.


        `procedures` is optional. Every procedure must be one the center can

        perform. Each item is a CPT code, or a modality, body part, and
        contrast.

        A CPT code matches when the center's compendium covers any catalog row

        for that code.


        Address only:


        `GET /api/v2/locations/search?address=30301`


        CPT code:


        `GET
        /api/v2/locations/search?address=30301&procedures[][cpt_code]=70551`


        Modality, body part, and contrast:


        `GET
        /api/v2/locations/search?address=30301&procedures[][modality_id]=00000000-0000-0000-0000-000000000001&procedures[][body_part_id]=00000000-0000-0000-0000-000000000002&procedures[][contrast]=without_contrast`
      operationId: searchLocations
      parameters:
        - name: address
          in: query
          required: true
          description: Search origin. A street address, city, or ZIP code.
          schema:
            type: string
        - name: radius
          in: query
          required: false
          description: Search radius in miles. Defaults to 60. Capped at 250.
          schema:
            type: integer
        - name: limit
          in: query
          required: false
          description: Maximum centers to return. Defaults to 10. Capped at 100.
          schema:
            type: integer
        - name: procedures
          in: query
          required: false
          style: form
          explode: true
          description: |
            Procedures the center must be able to perform. Pass `cpt_code`, or
            `modality_id`, `body_part_id`, and `contrast`, on each item.
          schema:
            type: array
            items:
              type: object
              properties:
                cpt_code:
                  type: string
                  description: CPT code. Matches any catalog row for that code.
                modality_id:
                  type: string
                  format: uuid
                body_part_id:
                  type: string
                  format: uuid
                contrast:
                  type: string
                  enum:
                    - with_contrast
                    - without_contrast
                    - without_and_with_contrast
      responses:
        '200':
          description: imaging centers near the address
          content:
            application/json:
              examples:
                locations:
                  value:
                    locations:
                      - id: 11111111-1111-1111-1111-111111111111
                        name: Anytown Medical Center
                        address_line_1: 123 Main St
                        address_line_2: null
                        city: Anytown
                        state: GA
                        zip_code: '30303'
                        distance: 4.2
              schema:
                type: object
                properties:
                  locations:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                          format: uuid
                        name:
                          type: string
                        address_line_1:
                          type: string
                          nullable: true
                        address_line_2:
                          type: string
                          nullable: true
                        city:
                          type: string
                          nullable: true
                        state:
                          type: string
                          nullable: true
                        zip_code:
                          type: string
                          nullable: true
                        distance:
                          type: number
                          nullable: true
                          description: Distance in miles from the search origin
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalServerError'
      security:
        - BearerAuth: []
components:
  responses:
    Unauthorized:
      description: Missing, expired, or wrong-environment token
      headers:
        X-Request-Id:
          $ref: '#/components/headers/RequestId'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          examples:
            unauthorized:
              value:
                error: Unauthorized
                message: Unauthorized
                type: authentication_error
                code: unauthorized
                request_id: abc-123
                documentation_url: https://docs.scan.com/guides/errors#unauthorized
            expired:
              value:
                error: API token expired
                message: API token expired
                type: authentication_error
                code: api_token_expired
                request_id: abc-123
                documentation_url: https://docs.scan.com/guides/errors#api_token_expired
    Forbidden:
      description: Endpoint is not enabled for this account
      headers:
        X-Request-Id:
          $ref: '#/components/headers/RequestId'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            error: This endpoint is not enabled for your account
            message: This endpoint is not enabled for your account
            type: permission_error
            code: endpoint_not_enabled
            request_id: abc-123
            documentation_url: https://docs.scan.com/guides/errors#endpoint_not_enabled
    UnprocessableEntity:
      description: Request body failed validation
      headers:
        X-Request-Id:
          $ref: '#/components/headers/RequestId'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            error: Phone is invalid
            message: Phone is invalid
            type: validation_error
            code: unprocessable_entity
            request_id: abc-123
            documentation_url: https://docs.scan.com/guides/errors#unprocessable_entity
            errors:
              - Phone is invalid
    TooManyRequests:
      description: Sandbox request allowance exhausted
      headers:
        X-Request-Id:
          $ref: '#/components/headers/RequestId'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            error: Sandbox request limit reached
            message: Sandbox request limit reached
            type: rate_limit_error
            code: sandbox_request_limit_reached
            request_id: abc-123
            documentation_url: https://docs.scan.com/guides/errors#sandbox_request_limit_reached
    InternalServerError:
      description: Unexpected internal error
      headers:
        X-Request-Id:
          $ref: '#/components/headers/RequestId'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            error: Internal server error
            message: Internal server error
            type: api_error
            code: internal_error
            request_id: abc-123
            documentation_url: https://docs.scan.com/guides/errors#internal_error
  headers:
    RequestId:
      description: Correlate this response with Scan support.
      schema:
        type: string
  schemas:
    ErrorResponse:
      type: object
      properties:
        error:
          type: string
        message:
          type: string
        type:
          type: string
          example: validation_error
        code:
          type: string
          example: unprocessable_entity
        request_id:
          type: string
        documentation_url:
          type: string
        errors:
          type: array
          items:
            type: string
      required:
        - error
        - message
        - type
        - code
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      description: >
        `Authorization: Bearer <api_token>`. Reuse the same token on later
        requests

        until it expires or is revoked. Do not request a new token for each
        call.

        The token does not expire after 24 hours. Sandbox tokens come from Get

        API keys and allow 2,000 successful requests or 7 days, or 90 days with

        an access code. Failed 4xx/5xx responses do not consume the allowance.

        Production tokens are issued from the group's API access tab and last

        until the expiry set there, or until revoked when no expiry is set.

````

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