The machine readable data behind the COIVD-19 Vaccine Spotter tool. Very beta.
Here's all of the underlying data in JSON format used for this tool. While I'm trying to maintain compatibility with the existing format, things can sometimes move fast, so I'm hesitant to declare this a fully stable API. But hopefully it should be stable-ish if you want to build anything on top of it, just be aware things may change.
Subscribe to the API Changelog discussion on GitHub for announcements on any API changes or additions.
/api/v0/states.json: A summary of all the providers being scanned in each US state.
/api/v0/US.json: Same data as in the state-specific files, but combined into a single US-wide file.
features.properties.id: Vaccine Spotter's own unique ID for this location.
features.properties.provider: A unique key representing the pharmacy or provider this location belongs to.
features.properties.provider_location_id: The provider's own unique ID to represent this location (eg, store number, or other identifier). Unique in combination with
features.properties.appointments_available: Boolean value as to whether or not appointments are currently available at this location as of last check.
appointments_availableis true, then for some providers, this field contains an array of additional details on the specific appointment timeslots, vaccine types, etc. This more detailed information is not available for all providers, and the amount of detail varies for each provider.
features.properties.appointments_last_fetched: ISO8601 time of when the appointment data was last fetched from the provider's website for this specific location.
features.properties.appointments_last_modified: ISO8601 time of when the appointment data was last modified. In most cases, this will mirror
appointments_last_fetched, but for some providers this may reflect an older time if we refresh the provider's website more frequently, but the provider's data indicates it is older.
features.properties.carries_vaccine: This field is mostly for internal processing usage. Locations may carry the vaccine if this field is
nulljust indicates this field isn't really used for a specific provider).
- License: You're welcome to do whatever you'd like with this data. If you use this data, I would appreciate linking back to Vaccine Spotter (just in the hopes that feedback on the data could help improve the quality of it), but it is not required.
- Rate Limits: There are no rate limits for accessing the API. Data is updated approximately once a minute, so refreshing more often than that may not have benefits.
If you're interested in historical analysis of the appointments data, I have been collecting raw data of all appointment changes that have been detected since 2021-02-26.
This historical data is based on PostgreSQL table auditing, so it captures any changes detected in the underlying database tables. This may not be the most ideal design for this, but it does capture all of the possible changes (changes in overall appointment availability, changes in the specific appointment slots available, etc).
- UTC Date Files: The audit records are organized into separate files for each complete UTC date.
- Gzipped JSON Lines Format: Each file is a gzipped JSON Lines file. This format is simply a file where each line is a JSON object (but it's not technically a JSON array to make it easier to read the sometime large files line-by-line).
- Exclusions: Some change events were explicitly
excluded from the audit records for the sake of space. If
only the following fields were being updated on a record,
then auditing was skipped:
transaction_timestamp: The time this audit change event occurred in the database.
action:Indicates whether a
DELETEstatement was responsible for the audit change.
previous_data:The complete data on this record as it existed just before the current transaction is about to take place and alter the record. Note that because some change events are excluded (see above), this previous data may contain data that wasn't previously in the audit history logs (so this is not necessarily the data that was previously audited for a record).
changed_data:The specific fields and data that is being updated on this record as part of this change.
data:The final set of data that exists after this transaction takes place.
/database/history/2021-02-26.jsonl.gz (3 MB)
/database/history/2021-02-27.jsonl.gz (9 MB)
/database/history/2021-02-28.jsonl.gz (13 MB)
/database/history/2021-03-01.jsonl.gz (14 MB)
/database/history/2021-03-02.jsonl.gz (28 MB)
/database/history/2021-03-03.jsonl.gz (27 MB)
/database/history/2021-03-04.jsonl.gz (19 MB)
/database/history/2021-03-05.jsonl.gz (47 MB)
/database/history/2021-03-06.jsonl.gz (31 MB)
/database/history/2021-03-07.jsonl.gz (22 MB)
/database/history/2021-03-08.jsonl.gz (21 MB)
/database/history/2021-03-09.jsonl.gz (40 MB)
/database/history/2021-03-10.jsonl.gz (32 MB)
/database/history/2021-03-11.jsonl.gz (21 MB)
/database/history/2021-03-12.jsonl.gz (23 MB)
/database/history/2021-03-13.jsonl.gz (23 MB)
/database/history/2021-03-14.jsonl.gz (18 MB)
/database/history/2021-03-15.jsonl.gz (47 MB)
/database/history/2021-03-16.jsonl.gz (42 MB)
/database/history/2021-03-17.jsonl.gz (28 MB)
/database/history/2021-03-18.jsonl.gz (18 MB)
/database/history/2021-03-19.jsonl.gz (23 MB)
/database/history/2021-03-20.jsonl.gz (56 MB)
/database/history/2021-03-21.jsonl.gz (87 MB)
/database/history/2021-03-22.jsonl.gz (65 MB)
/database/history/2021-03-23.jsonl.gz (54 MB)
/database/history/2021-03-24.jsonl.gz (45 MB)
/database/history/2021-03-25.jsonl.gz (33 MB)
/database/history/2021-03-26.jsonl.gz (103 MB)
/database/history/2021-03-27.jsonl.gz (159 MB)
/database/history/2021-03-28.jsonl.gz (131 MB)
/database/history/2021-03-29.jsonl.gz (135 MB)
/database/history/2021-03-30.jsonl.gz (104 MB)
/database/history/2021-03-31.jsonl.gz (124 MB)
/database/history/2021-04-01.jsonl.gz (119 MB)
/database/history/2021-04-02.jsonl.gz (252 MB)
/database/history/2021-04-03.jsonl.gz (598 MB)
/database/history/2021-04-04.jsonl.gz (280 MB)
/database/history/2021-04-05.jsonl.gz (236 MB)
/database/history/2021-04-06.jsonl.gz (201 MB)
/database/history/2021-04-07.jsonl.gz (146 MB)
/database/history/2021-04-08.jsonl.gz (122 MB)
/database/history/2021-04-09.jsonl.gz (204 MB)
/database/history/2021-04-10.jsonl.gz (244 MB)
/database/history/2021-04-11.jsonl.gz (206 MB)
/database/history/2021-04-12.jsonl.gz (226 MB)
/database/history/2021-04-13.jsonl.gz (225 MB)
/database/history/2021-04-14.jsonl.gz (139 MB)
/database/history/2021-04-15.jsonl.gz (95 MB)
/database/history/days.json: A list of the available historical files. Updated whenever new daily files are available.
/database/stores.jsonl.gz: A daily snapshot of the latest stores database table in the same JSON Lines format as the rest of the historical data.