Every search your visitors run and every store they click on is recorded against your store locator account. As well as viewing this inside the admin area, you can pull the raw data out over HTTPS as JSON and use it in your own reporting: a spreadsheet, a BI tool such as Looker Studio or Power BI, a scheduled script, or your own internal dashboard.


The reporting API is read-only. There is nothing to install and no OAuth flow to complete — you make an ordinary GET request to a URL that includes your API key and a date range, and you get your data back.


Before you start: find your API key

Every request must include your account's unique identifier, passed as the uid parameter.

  1. Sign in to your store locator admin area.
  2. Go to https://www.storelocatorwidgets.com/admin/Details.
  3. Copy the value shown under Store Locator API key.



Keep your API key private. Anyone who has it can read your search and click history. Don't publish it in client-side JavaScript on a public page, and don't commit it to a public code repository. If you think it has been exposed, contact support and we can issue you a new one.


The endpoints


There are two reports, selected with the type parameter. Both live at the same base URL:


https://reporting.storelocatorwidgets.com/reports

Search report

Returns the searches visitors have run against your locator in the period you request.


https://reporting.storelocatorwidgets.com/reports?type=searches&uid=YOUR_API_KEY&startstamp=1784505600&endstamp=1787615999

Click report

Returns the clicks visitors have made on your locations in the period you request.


https://reporting.com/reports?type=clicks&uid=YOUR_API_KEY&startstamp=1784505600&endstamp=1787615999

Replace YOUR_API_KEY with the key you copied from the Details page, and set the two timestamps to the period you want.


startstamp and endstamp are both required. If you leave either out, or pass a value that isn't a UNIX timestamp, the request will not return the data you expect.

Note that UNIX timestamps are measured in seconds, not milliseconds. If your timestamp is 13 digits long it has come from something like JavaScript's Date.now() and needs dividing by 1000.


JSON or JSONP

By default the endpoints return plain JSON, which is what you want for server-side scripts, curl, spreadsheets and most BI tools.

If you are calling the API from JavaScript running in a browser on your own domain, you may run into a cross-origin (CORS) restriction. In that case, add a callback parameter and the response will be wrapped as JSONP — a JavaScript function call that you can load with a script tag:



https://reporting.storelocatorwidgets.com/reports?type=searches&uid=YOUR_API_KEY&startstamp=1784505600&endstamp=1787615999&callback=slwds

The value you pass to callback is the name of the function that will be called with your data — in the example above, the response is wrapped as slwds({ ... }).

Remember that anything running in a browser exposes your API key to whoever is looking at the page. For anything public-facing, call the API from your server instead and pass the results to the page.


Converting dates to UNIX timestamps

If you need to work out the timestamps by hand, epochconverter.com will do it for you. Otherwise:

JavaScript


javascript

const startstamp = Math.floor(new Date('2026-07-20T00:00:00Z').getTime() / 1000);
const endstamp   = Math.floor(new Date('2026-08-24T23:59:59Z').getTime() / 1000);

PHP


php

$startstamp = strtotime('2026-07-20 00:00:00');
$endstamp   = strtotime('2026-08-24 23:59:59');

Python


python

from datetime import datetime, timezone
startstamp = int(datetime(2026, 7, 20, tzinfo=timezone.utc).timestamp())

Google Sheets or Excel — where A1 holds a date:


=INT((A1-("1/1/1970"-"1/1/1900"+2))*86400)

A useful shortcut for rolling reports: 24 hours is 86400 seconds, so "the last 30 days" is simply the current timestamp minus 2592000.


A worked example

To pull the click report covering 20 July 2026 to 24 August 2026:

  • startstamp = 1784505600 (20 July 2026, 00:00:00 UTC)
  • endstamp = 1787615999 (24 August 2026, 23:59:59 UTC)


https://reporting.storelocatorwidgets.com/reports?type=clicks&uid=YOUR_API_KEY&startstamp=1784505600&endstamp=1787615999

Paste that into your browser's address bar with your own API key in place and you'll see the raw JSON immediately — this is the quickest way to check the range you've built is the one you meant.


Calling the API from your own code

curl


bash

curl "https://reporting.storelocatorwidgets.com/reports?type=searches&uid=YOUR_API_KEY&startstamp=1784505600&endstamp=1787615999"

PHP


php

$uid = 'YOUR_API_KEY';
$url = 'https://reporting.storelocatorwidgets.com/reports?type=searches'
     . '&uid=' . urlencode($uid)
     . '&startstamp=' . (time() - 2592000)   // last 30 days
     . '&endstamp=' . time();

$data = json_decode(file_get_contents($url), true);

Python


python

import time, requests

params = {
    'type': 'clicks',
    'uid': 'YOUR_API_KEY',
    'startstamp': int(time.time()) - 2592000,   # last 30 days'endstamp': int(time.time()),
}

data = requests.get('https://reporting.storelocatorwidgets.com/reports', params=params).json()

JSONP in the browser


html

<script>
function slwds(data) {
  console.log(data);
}
script>
<script src="https://reporting.storelocatorwidgets.com/reports?type=searches&uid=YOUR_API_KEY&startstamp=1784505600&endstamp=1787615999&callback=slwds">script>


Troubleshooting

I get no data back, or an unexpected response. Check that both startstamp and endstamp are present and are 10-digit UNIX timestamps in seconds. A 13-digit value (milliseconds) is the most common cause.


My date range looks right but the report is empty. Confirm there was locator activity in that period by checking the reports inside your admin area for the same dates. Also check startstamp is earlier than endstamp.


I get a CORS error in the browser console. Use the callback parameter to switch to JSONP, or better, make the request from your server.


The response is wrapped in a function call and my JSON parser fails. You have a callback parameter in your URL. Remove it to get plain JSON.

Still stuck? Get in touch with support with the URL you are calling — with the uid removed — and we'll take a look.


Related articles



← Back to main Support page