Skip to main content

How do I export scan data to CSV?

Updated September 14, 2026 · 3 min read · Every paid plan and the free trial

Use the Export CSV button. On the Analytics page it downloads account-wide totals for the date range on screen — scans per day plus device, operating system, browser and, where your plan includes them, country, city and referrer breakdowns. On a single code's page it downloads one row per scan, with the time, device, operating system, browser, country, city, IP address and referrer. Both exports cover only the range you have selected, which can be at most 365 days.

Export account-wide totals

  1. Open Analytics in the sidebar.
  2. Choose the source and the date range you want — the export matches exactly what is on screen.
  3. Click Export CSV next to the date dropdown.

The file arrives as qrcodestack-analytics-30d.csv or similar, named after the range you chose. It is written from the data already loaded in the page, so it downloads instantly with no waiting.

Inside, the blocks are stacked with a blank line between them:

  • Date and a count, one row per day
  • Device Type and a count
  • Operating System and a count
  • Browser and a count
  • Country, City and Referrer blocks, each only when there is something to report

Export a row per scan for one code

  1. Open the code from My QR Codes.
  2. Set the date range on its analytics section.
  3. Click Export CSV. The button reads Exporting... while it collects the rows.

Columns: Scan Time, Device, OS, Browser, Country, City, IP Address, Referrer. Scan Time is in UTC. Up to 10,000 scans are collected for the selected range, so split a very busy code into shorter ranges if you need everything.

This is the export to take before you delete a code — deleting is permanent and takes the scan history with it. Archiving instead keeps the data.

What the file does and does not include

QuestionAnswer
Which scans are in it?Only scans that passed the People filter — bots, link previews and repeats within seconds are left out.
How far back?Whatever range is on screen, up to 365 days at a time. It is not a full-history export.
Country and city?Filled only on plans that include location analytics. Otherwise the columns come back empty.
Campaign parameters?Not in either CSV. Read them on the Campaigns card, or pull them from the API.
Personal details?None. Scans are anonymous; the closest thing to an identifier is the IP address on the per-code export.

Pulling full history with the API

For history beyond one range, or to load scans into your own warehouse on a schedule, use the API instead of the buttons:

  • GET /api/v1/qr-codes/{id}/analytics — totals and breakdowns, with optional from and to dates.
  • GET /api/v1/qr-codes/{id}/scans — the raw scan list, cursor-paginated, up to 100 rows per page.

Both default to the same People filter; pass traffic=all to include machine traffic. API access needs a Pro or Business plan and a key with the analytics:read scope — see getting started with the API.

Common problems

The button reads "Export CSV (Pro)"

The account is on the free plan or the subscription has lapsed. Any active paid plan, and the free trial, can export.

There is no button at all

It only appears once there is at least one scan in the selected range. Widen the range.

Country and City columns are blank

Location detail is included on the Business plan and during the free trial. Starter and Pro get everything else.

The file will not open properly in a spreadsheet

It is UTF-8 CSV. If accents look wrong, import it rather than double-clicking, and choose UTF-8 as the encoding.

I need every scan ever recorded

Export in 365-day slices, use the API, or take a full account export from Settings → Profile → Privacy & Data, which includes scan analytics as JSON.

Frequently asked questions

Does the export include short-link clicks?

The Analytics export follows the source filter on screen, so set it to Links or All sources first. The Links list has its own CSV export.

Can I schedule an export?

No. Use the API on your own schedule, or turn on the scan report email for a regular summary.

Is there a row limit?

The per-code export collects up to 10,000 scans for the selected range. The account export is a set of totals, so it stays small.

Does exporting change anything?

No. It only reads data already on screen or already recorded.

Still stuck?

Email support@qrcodestack.com with the email on your account and, if it is about one code, its name or short link. A person replies within one business day, usually sooner.