Walgreens Appointments API

Appointment scheduling and management

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/walgreens-appointments-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

walgreens-appointments-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Walgreens Prescription Refill Appointments API
  description: Enables medication management application developers to process prescription refills and transfers at any Walgreens pharmacy location. Supports barcode scanning for refill initiation and image-based prescription transfers from other pharmacies. Processes prescriptions from 8,200+ Walgreens pharmacies with mobile-optimized WebView checkout flows.
  version: 1.0.0
  contact:
    url: https://developer.walgreens.com
  termsOfService: https://developer.walgreens.com/terms
servers:
- url: https://services.walgreens.com
  description: Production
- url: https://services-qa.walgreens.com
  description: Sandbox
security:
- apiKey: []
tags:
- name: Appointments
  description: Appointment scheduling and management
paths:
  /api/vaccine/scheduling/timeslots/v1:
    post:
      operationId: getVaccineTimeslots
      summary: Get Vaccine Timeslots
      description: Retrieves available appointment timeslots for specified vaccines at Walgreens locations near a given zip code and coordinates. Returns locations with their available dates and time slots, vaccine product information, and distance from the specified position.
      tags:
      - Appointments
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TimeslotsRequest'
            example:
              apiKey: YOUR_API_KEY
              affId: YOUR_AFFILIATE_ID
              state: IL
              zipCode: '60601'
              dob: '1990-05-15'
              vaccine:
              - '207'
              appointmentAvailability:
                startDateTime: '2026-05-10'
              position:
                latitude: 41.8827
                longitude: -87.6233
      responses:
        '200':
          description: Available vaccine appointment locations and timeslots
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TimeslotsResponse'
        '400':
          description: Malformed request body
        '403':
          description: Invalid API key
        '500':
          description: Internal server error
  /api/vaccine/scheduling/hold/v1:
    post:
      operationId: holdVaccineAppointment
      summary: Hold Vaccine Appointment
      description: Reserves a specific vaccine appointment timeslot at a Walgreens location, returning an engagement ID for use in subsequent patient registration and confirmation steps. The hold is temporary and must be confirmed to finalize the booking.
      tags:
      - Appointments
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/HoldRequest'
            example:
              apiKey: YOUR_API_KEY
              affId: YOUR_AFFILIATE_ID
              locationId: store-5823
              appointmentDate: '2026-05-10T09:30:00-05:00'
              slot: 09:30 am
              channel: Mobile
              client: MyHealthApp
              engagementType: Guest
              vaccines:
              - code: '207'
                productId: covid-moderna-001
                rxRequired: false
      responses:
        '200':
          description: Appointment hold successful, returns engagement ID
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HoldResponse'
        '400':
          description: Malformed request body
        '401':
          description: Request unauthorized
        '403':
          description: Invalid API key
        '409':
          description: Cannot place hold for timeslot - slot unavailable
        '500':
          description: Internal server error
  /api/vaccine/scheduling/confirm/v1:
    patch:
      operationId: confirmVaccineAppointment
      summary: Confirm Vaccine Appointment
      description: Finalizes a vaccine appointment reservation, converting the held timeslot into a confirmed booking. Must be called after patient information has been attached to the engagement. Returns HTTP 204 on success.
      tags:
      - Appointments
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ConfirmRequest'
            example:
              apiKey: YOUR_API_KEY
              affId: YOUR_AFFILIATE_ID
              engagementId: eng-12345-abc
      responses:
        '204':
          description: Appointment confirmed successfully
        '400':
          description: Malformed request body
        '401':
          description: Request unauthorized
        '403':
          description: Invalid API key
        '409':
          description: Cannot confirm appointment
        '500':
          description: Internal server error
components:
  schemas:
    VaccineLocation:
      type: object
      properties:
        locationId:
          type: string
          description: Unique location identifier
        name:
          type: string
          description: Store name
        storenumber:
          type: string
          description: Walgreens store number
        description:
          type: string
          description: Store description
        position:
          type: object
          properties:
            latitude:
              type: number
            longitude:
              type: number
        address:
          type: object
          properties:
            line1:
              type: string
            line2:
              type: string
            city:
              type: string
            state:
              type: string
            country:
              type: string
            zip:
              type: string
        phone:
          type: array
          items:
            type: object
            properties:
              type:
                type: string
              number:
                type: string
        distance:
          type: number
          description: Distance in miles from search coordinates
        timeZone:
          type: string
          description: Location timezone
        appointmentAvailability:
          type: array
          items:
            $ref: '#/components/schemas/AppointmentAvailability'
    HoldResponse:
      type: object
      properties:
        engagementId:
          type: string
          description: Unique engagement identifier for subsequent steps
    TimeslotsResponse:
      type: object
      properties:
        locations:
          type: array
          items:
            $ref: '#/components/schemas/VaccineLocation'
    TimeslotsRequest:
      type: object
      required:
      - apiKey
      - affId
      - state
      - zipCode
      - dob
      - vaccine
      - appointmentAvailability
      - position
      properties:
        apiKey:
          type: string
          description: Your Walgreens API key
        affId:
          type: string
          description: Your affiliate identifier
        state:
          type: string
          description: Two-character US state code
        zipCode:
          type: string
          description: Patient or search zip code
        dob:
          type: string
          format: date
          description: Patient date of birth in YYYY-MM-DD format
        vaccine:
          type: array
          items:
            type: string
          maxItems: 4
          description: Array of up to 4 vaccine code IDs
        appointmentAvailability:
          type: object
          required:
          - startDateTime
          properties:
            startDateTime:
              type: string
              format: date
              description: Start date for available appointments
            endDateTime:
              type: string
              format: date
              description: Optional end date for appointment range
        position:
          type: object
          required:
          - latitude
          - longitude
          properties:
            latitude:
              type: number
              format: double
              description: Search latitude coordinate
            longitude:
              type: number
              format: double
              description: Search longitude coordinate
    HoldRequest:
      type: object
      required:
      - apiKey
      - affId
      - locationId
      - appointmentDate
      - slot
      - channel
      - client
      - engagementType
      - vaccines
      properties:
        apiKey:
          type: string
          description: Your Walgreens API key
        affId:
          type: string
          description: Your affiliate identifier
        locationId:
          type: string
          description: Store location ID from timeslots response
        appointmentDate:
          type: string
          description: ISO format appointment date/time with timezone offset
          example: '2026-05-10T09:30:00-05:00'
        slot:
          type: string
          description: Time slot to hold
          example: 09:30 am
        channel:
          type: string
          enum:
          - Web
          - Mobile
          description: Client channel type
        client:
          type: string
          description: Client application identifier
        engagementType:
          type: string
          enum:
          - Guest
          description: Engagement type, always Guest
        vaccines:
          type: array
          items:
            type: object
            required:
            - code
            - productId
            - rxRequired
            properties:
              code:
                type: string
                description: Vaccine code
              productId:
                type: string
                description: Vaccine product identifier
              rxRequired:
                type: boolean
                description: Whether a prescription is required
        userResponses:
          type: array
          items:
            type: object
            properties:
              details:
                type: array
                items:
                  type: object
                  properties:
                    answer:
                      type: string
                    question:
                      type: string
    ConfirmRequest:
      type: object
      required:
      - apiKey
      - affId
      - engagementId
      properties:
        apiKey:
          type: string
          description: Your Walgreens API key
        affId:
          type: string
          description: Your affiliate identifier
        engagementId:
          type: string
          description: Engagement ID from the hold response
    AppointmentAvailability:
      type: object
      properties:
        manufacturer:
          type: array
          items:
            type: object
            properties:
              productId:
                type: string
              vaccineCode:
                type: string
              vaccineName:
                type: string
              category:
                type: string
              prescriptionRequired:
                type: boolean
        date:
          type: string
          format: date
          description: Available date
        day:
          type: string
          description: Day of week
        slots:
          type: array
          items:
            type: string
          description: Available time slots (e.g. "09:30 am")
        numberOfSlotsAvailable:
          type: integer
          description: Total number of open slots for the date
  securitySchemes:
    apiKey:
      type: apiKey
      in: query
      name: apiKey
      description: API key obtained from Walgreens Developer Portal