Democracy Works Voting Locations API

The Voting Locations API from Democracy Works — 1 operation returning polling places, early-voting sites and ballot drop boxes for a street address, with hours, open/close dates, coordinates, source attribution and the normalized address the service resolved.

Operations 1

GET /voting-locations Voting Locations #

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/democracy-works-voting-locations-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 form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

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

OpenAPI Specification

democracy-works-voting-locations-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Democracy Works Voting Locations API
  version: '2.0'
  description: '# Introduction


    The Democracy Works Elections API provides your application with comprehensive elections data and voting guidance, surfacing our unparalleled coverage of upcoming local, state, and federal elections.'
servers:
- url: https://api.democracy.works/v2
tags:
- name: Voting Locations
paths:
  /voting-locations:
    get:
      operationId: getVotingLocations
      summary: Voting Locations
      description: '### Address arguments


        An address may be supplied in one of two ways:


        - **As a single string**, via `address`.

        - **As components**, via `addressStreet`, `addressCity`, `addressState`,

        and `addressZip`. All four component parameters must be present, and

        `addressUnitNumber` may optionally be added.


        All requests must include an address as single string or with all required

        components (preferred).


        ```bash

        # Address as a single string

        curl \

        --get \

        --header "X-API-KEY: $YOUR_API_KEY" \

        --data-urlencode address="20 Jay Street Brooklyn NY 11201" \

        --data-urlencode publishStatus=prepublished \

        https://api.democracy.works/v2/voting-locations

        ```


        ```bash

        # Address as components

        curl \

        --get \

        --header "X-API-KEY: $YOUR_API_KEY" \

        --data-urlencode addressStreet="20 Jay Street" \

        --data-urlencode addressCity=Brooklyn \

        --data-urlencode addressState=NY \

        --data-urlencode addressZip=11201 \

        --data-urlencode addressUnitNumber="Unit 410" \

        --data-urlencode publishStatus=prepublished \

        https://api.democracy.works/v2/voting-locations

        ```'
      parameters:
      - in: query
        name: address
        required: false
        schema:
          type: string
          description: The full street address as a single string. Required unless all of `addressStreet`, `addressCity`, `addressState`, and `addressZip` are provided.
          example: 20 Jay Street Brooklyn NY 11201
      - in: query
        name: addressStreet
        required: false
        schema:
          type: string
          description: The street portion of the address. Must be provided together with `addressCity`, `addressState`, and `addressZip`.
          example: 20 Jay Street
      - in: query
        name: addressCity
        required: false
        schema:
          type: string
          description: The city portion of the address. Must be provided together with `addressStreet`, `addressState`, and `addressZip`.
          example: Brooklyn
      - in: query
        name: addressState
        required: false
        schema:
          type: string
          description: The 2-letter postal abbreviation for the state. DC is also accepted. Must be provided together with `addressStreet`, `addressCity`, and `addressZip`.
          example: NY
      - in: query
        name: addressZip
        required: false
        schema:
          type: string
          description: The 5-digit ZIP code. Must be provided together with `addressStreet`, `addressCity`, and `addressState`.
          example: '11201'
      - in: query
        name: addressUnitNumber
        required: false
        schema:
          type: string
          description: Optional apartment, suite, or unit number. Used only with the address component parameters; it is silently ignored when sent alongside `address`.
          example: Unit 410
      - in: query
        name: publishStatus
        required: false
        schema:
          type: string
          example: prepublished
          default: published
          enum:
          - published
          - prepublished
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
                properties:
                  election:
                    $ref: '#/components/schemas/votingLocationElection'
                  otherElections:
                    type: array
                    items:
                      $ref: '#/components/schemas/votingLocationElection'
                  normalizedInput:
                    $ref: '#/components/schemas/normalizedAddress'
                  state:
                    $ref: '#/components/schemas/state'
                  votingLocations:
                    type: array
                    items:
                      $ref: '#/components/schemas/votingLocation'
                  earlyVoteSites:
                    type: array
                    items:
                      $ref: '#/components/schemas/votingLocation'
                  dropOffLocations:
                    type: array
                    items:
                      $ref: '#/components/schemas/votingLocation'
              example:
                election:
                  id: 36546cc9-aafb-466b-b92a-b91674eeb091
                  name: New York General Election
                  electionDay: '2025-11-04'
                  ocdDivisionId: ocd-division/country:us/state:ny
                otherElections: []
                normalizedInput:
                  line1: 20 Jay St
                  line2: null
                  unit_number: null
                  unit_label: null
                  city: Brooklyn
                  state: NY
                  zip: '11201'
                state:
                  name: Hawaii
                  electionAdministrationBody:
                    electionNoticeText: null
                    electionNoticeUrl: null
                    votingLocationFinderUrl: https://elections.hawaii.gov/voter-service-centers-and-places-of-deposit/
                votingLocations:
                - uuid: 05bf2123-143c-4ad5-8473-37959b147240
                  address:
                    locationName: Farragut Comm Ctr
                    line1: 228 York St
                    line2: null
                    city: Brooklyn
                    state: NY
                    zip: '11201'
                  latitude: 40.700687
                  longitude: 73.98139
                  startDate: '2025-11-04'
                  endDate: '2025-11-04'
                  pollingHours: 'Tue, Nov 4: 6:00 am - 9:00 pm'
                  notes: Conference Room G
                  sources:
                  - name: Democracy Works
                earlyVoteSites:
                - uuid: f86db89d-8940-45d4-9144-6c9ec11171a8
                  address:
                    locationName: New York City College of Technology
                    line1: 285 Jay St
                    line2: null
                    city: Brooklyn
                    state: NY
                    zip: '11201'
                  latitude: 40.695488
                  longitude: -73.98695
                  startDate: '2025-10-25'
                  endDate: '2025-11-02'
                  pollingHours: 'Sat, Oct 25: 9:00 am - 5:00 pm

                    Sun, Oct 26: 9:00 am - 5:00 pm

                    Mon, Oct 27: 9:00 am - 5:00 pm

                    Tue, Oct 28: 10:00 am - 8:00 pm

                    Wed, Oct 29: 10:00 am - 8:00 pm

                    Thu, Oct 30: 9:00 am - 5:00 pm

                    Fri, Oct 31: 8:00 am - 4:00 pm

                    Sat, Nov 1: 9:00 am - 5:00 pm

                    Sun, Nov 2: 9:00 am - 5:00 pm'
                  notes: null
                  sources:
                  - name: Democracy Works
                dropOffLocations:
                - uuid: 7ac7ab89-1d10-4001-975f-e5e4bf7e882f
                  address:
                    locationName: New York City College of Technology
                    line1: 285 Jay St
                    line2: null
                    city: Brooklyn
                    state: NY
                    zip: '11201'
                  latitude: 40.695488
                  longitude: -73.98695
                  startDate: '2025-10-25'
                  endDate: '2025-11-02'
                  pollingHours: 'Sat, Oct 25: 9:00 am - 5:00 pm

                    Sun, Oct 26: 9:00 am - 5:00 pm

                    Mon, Oct 27: 9:00 am - 5:00 pm

                    Tue, Oct 28: 10:00 am - 8:00 pm

                    Wed, Oct 29: 10:00 am - 8:00 pm

                    Thu, Oct 30: 9:00 am - 5:00 pm

                    Fri, Oct 31: 8:00 am - 4:00 pm

                    Sat, Nov 1: 9:00 am - 5:00 pm

                    Sun, Nov 2: 9:00 am - 5:00 pm'
                  notes: null
                  sources:
                  - name: Democracy Works
                - uuid: fa0c4eb9-8e7c-473a-8430-f2defe2214c1
                  address:
                    locationName: Farragut Comm Ctr
                    line1: 228 York St
                    line2: null
                    city: Brooklyn
                    state: NY
                    zip: '11201'
                  latitude: 40.700687
                  longitude: -73.98139
                  startDate: '2025-11-04'
                  endDate: '2025-11-04'
                  pollingHours: 'Tue, Nov 4: 6:00 am - 9:00 pm'
                  notes: null
                  sources:
                  - name: Democracy Works
                - uuid: 6ac9151a-9097-41a0-a82a-19581a32a577
                  address:
                    locationName: Kings County Board of Elections
                    line1: 345 Adams Street
                    line2: 4th Floor
                    city: Brooklyn
                    state: NY
                    zip: '11201'
                  latitude: 40.692623
                  longitude: -73.98846
                  startDate: '2025-10-25'
                  endDate: '2025-11-04'
                  pollingHours: 'Sat, Oct 25: 9:00 am - 5:00 pm

                    Sun, Oct 26: 9:00 am - 5:00 pm

                    Mon, Oct 27: 9:00 am - 5:00 pm

                    Tue, Oct 28: 10:00 am - 8:00 pm

                    Wed, Oct 29: 10:00 am - 8:00 pm

                    Thu, Oct 30: 9:00 am - 5:00 pm

                    Fri, Oct 31: 8:00 am - 4:00 pm

                    Sat, Nov 1: 9:00 am - 5:00 pm

                    Sun, Nov 2: 9:00 am - 5:00 pm

                    Tue, Nov 4: 6:00 am - 9:00 pm'
                  notes: null
                  sources:
                  - name: Democracy Works
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/votingLocationError'
              examples:
                missingAddress:
                  summary: Missing address parameters
                  value:
                    message: Invalid parameters, address components or an address must be provided.
                invalidPublishStatus:
                  summary: Invalid publishStatus value
                  value:
                    message: Invalid param supplied for publishStatus
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/votingLocationError'
              example:
                message: Forbidden
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/votingLocationError'
              examples:
                missingHouseNumber:
                  summary: No house number identified
                  value:
                    message: Incomplete address. No house number identified.
                noSMARTYNormalization:
                  summary: Unable to normalize address
                  value:
                    message: Unable to normalize user address
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/votingLocationError'
              example:
                message: Too Many Requests
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/votingLocationError'
              example:
                message: Internal server error
        '503':
          description: Service Unavailable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/votingLocationError'
              example:
                message: Service unavailable
      tags:
      - Voting Locations
components:
  schemas:
    votingLocationError:
      type: object
      properties:
        message:
          type: string
          description: A human-readable message describing the error.
      required:
      - message
    votingLocation:
      type: object
      properties:
        uuid:
          type: string
        address:
          type: object
          properties:
            locationName:
              type:
              - string
              - null
            line1:
              type: string
            line2:
              type:
              - string
              - null
            city:
              type: string
            state:
              type: string
            zip:
              type: string
        latitude:
          type: number
        longitude:
          type: number
        startDate:
          type: string
        endDate:
          type: string
        pollingHours:
          type: string
        notes:
          type:
          - string
          - 'null'
          description: Additional information to help voters find a Voting Location
        sources:
          type: array
          items:
            type: object
            properties:
              name:
                type: string
                description: The name of the organization that gathered the Voting Locations
    normalizedAddress:
      type: object
      properties:
        line1:
          type: string
        line2:
          type:
          - string
          - null
        unit_number:
          type:
          - string
          - null
        unit_label:
          type:
          - string
          - null
        city:
          type: string
        state:
          type: string
        zip:
          type: string
    state:
      type: object
      properties:
        name:
          type: string
          description: Name of the state
        electionAdministrationBody:
          type: object
          properties:
            electionNoticeText:
              type:
              - string
              - 'null'
              description: Information shared by the state related to an ongoing election
            electionNoticeUrl:
              type:
              - string
              - 'null'
              description: Link to an official state source for electionNoticeText
            votingLocationFinderUrl:
              type:
              - string
              - 'null'
              description: Link to official state lookup tool
    votingLocationElection:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        electionDay:
          type: string
        ocdDivisionId:
          type: string
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: X-API-KEY