openFDA is designed primarily for real-time queries. However, some applications may require all the data served by an endpoint, or exceed the query limits in place to promote equitable access and manage load on the system. Because openFDA is open source and its source code is available on GitHub, you can create your own instance of openFDA without these limits and run it on your own server. You can also download the data for any openFDA endpoint, in exactly the same JSON format that query results follow, and build your own custom application that uses these JSON files. Because the format is exactly the same as API query results, you can reuse existing code that you’ve written for applications that process openFDA data. There are two things you should know about these downloads.

  • Downloads are broken into parts. Some categories have millions of records. For those categories, the data are broken up into many small parts. So while some categories have all their data available in a single file, others have dozens of files. Each file is a zipped JSON file.
  • To keep your downloaded data up to date, you need to re-download the data every time it is updated. Every time an endpoint is updated (which happens on a regular basis), it is possible that every record has changed, due to corrections or enhancements. That means that you cannot simply download “new” files to keep your downloaded version up to date. You need to download all available data files for the endpoint of interest.

    How to download data

    There are three ways to download data from openFDA.

  • Download manually. All downloadable files are available on this page. Additionally, there’s a downloads section on each endpoint’s openFDA page—for example, drug enforcement downloads. There you can download a sampling of the data, or all of it, one file at a time.
  • Write code to download the data automatically. A json containing links to all downloadable files is available at here. The data files are hosted at