VoteHub Polling API Beta

Welcome to the VoteHub Polling API! This service provides access to political polling data through a simple REST interface.

As a beta service, we're actively working on adding more endpoints and features, expanding our database to include additional subjects and poll types, incorporating historical data alongside real-time updates, and improving our documentation as new capabilities are introduced.

We appreciate your feedback as we continue to develop this resource.

This API is licensed under Creative Commons Attribution 4.0 International. API Users must follow the license terms. Click for details.

GET /polls Retrieve a list of polls

Returns all polls in the database with optional filters to narrow results.

For pollster and subject parameters, dashes (-) and spaces (%20) are interchangeable. The poll_type parameter requires exact matching.

Type of poll (e.g. approval, generic-ballot, favorability).

Filter by the pollster name (partial match).

Filter by poll subject (e.g. a politician's name).

Filter polls whose end date is on or after this date.

Filter polls whose end date is on or before this date.

Minimum sample size (integer).

Population type (e.g. rv - registered voters, lv - likely voters, a - all voters).

https://api.votehub.com/polls

Example Responses

Trump Approval Ratings
This example shows how to request presidential approval polls for Donald Trump.
GET /polls?poll_type=approval&subject=donald-trump
{
  "polls": [
    {
      "id": "appdonips4x59vt9j",
      "poll_type": "approval",
      "sample_size": "1174",
      "population": "a",
      "url": "https://www.ipsos.com/en-us/three-five-americans-say-cost-living-going-wrong-direction",
      "created_at": "2025-03-04",
      "start_date": "2025-03-03",
      "end_date": "2025-03-04",
      "pollster": "Ipsos",
      "answers": [
        { "choice": "Approve", "pct": 44 },
        { "choice": "Disapprove", "pct": 51 }
      ],
      "seat_name": null,
      "sponsors": [
        "Reuters"
      ],
      "internal": false,
      "partisan": null,
      "subject": "Donald Trump"
    }
  ]
}
Generic Ballot
This example shows the generic ballot polls.
GET /polls?poll_type=generic-ballot
{
  "polls": [
    {
      "id": "gen202eme3uzn57et",
      "poll_type": "generic-ballot",
      "sample_size": "1000",
      "population": "rv",
      "url": "https://emersoncollegepolling.com/march-2025-national-poll/",
      "created_at": "2025-03-03",
      "start_date": "2025-03-02",
      "end_date": "2025-03-03",
      "pollster": "Emerson College",
      "answers": [
        { "choice": "Dem", "pct": 44.4 },
        { "choice": "Rep", "pct": 41.4 }
      ],
      "seat_name": "Generic",
      "sponsors": [],
      "internal": false,
      "partisan": null,
      "subject": "2026"
    }
  ]
}
GET /polls/{poll_id} Retrieve a single poll by ID

Returns a single poll by its unique ID.

The unique identifier for the poll.

https://api.votehub.com/polls/{poll_id}

Example Response

Single Poll Response
This example shows the response when retrieving a single poll by ID.
GET /polls/appdonips4x59vt9j
{
  "id": "appdonips4x59vt9j",
  "poll_type": "approval",
  "sample_size": "1174",
  "population": "a",
  "url": "https://www.ipsos.com/en-us/three-five-americans-say-cost-living-going-wrong-direction",
  "created_at": "2025-03-04",
  "start_date": "2025-03-03",
  "end_date": "2025-03-04",
  "pollster": "Ipsos",
  "answers": [
    {
      "choice": "Approve",
      "pct": 44
    },
    {
      "choice": "Disapprove",
      "pct": 51
    }
  ],
  "seat_name": null,
  "sponsors": [
    "Reuters"
  ],
  "internal": false,
  "partisan": null,
  "subject": "Donald Trump"
}
GET /pollsters Retrieve pollster names

Returns a distinct list of all pollster names in the database. There are no additional parameters for this endpoint.

https://api.votehub.com/pollsters

Example Response

Pollster List
This example shows a sample list of pollster names retrieved from the endpoint.
GET /pollsters
[
  "Morning Consult",
  "YouGov",
  "Ipsos",
  "Gallup",
  "Siena College",
  "Emerson College",
  "Quinnipiac University",
  "Marist",
  "Suffolk University",
  "Fox News"
]
GET /subjects Retrieve poll subjects

Returns a list of subjects with their associated poll types. This shows which subjects can be used with different poll types. No additional parameters are required.

https://api.votehub.com/subjects

Example Response

Subjects List
This example shows subjects and their compatible poll types, helping you understand which filter combinations are valid.
GET /subjects
[
  {
    "subject": "2026",
    "poll_types": [
      "generic-ballot"
    ]
  },
  {
    "subject": "Congress",
    "poll_types": [
      "approval"
    ]
  },
  {
    "subject": "Donald Trump",
    "poll_types": [
      "favorability",
      "approval"
    ]
  },
  {
    "subject": "JD Vance",
    "poll_types": [
      "favorability"
    ]
  },
  {
    "subject": "Supreme Court",
    "poll_types": [
      "approval"
    ]
  }
]
GET /poll-types Retrieve poll types

Returns all distinct poll types such as approval, generic ballot, or favorability. No parameters are required.

https://api.votehub.com/poll-types

Example Response

Poll Types List
This example shows all the different poll types available in the database.
GET /poll-types
[
  "approval",
  "favorability",
  "generic-ballot",
]