Foot Traffic Data API - Visits, Trade Area, Demographics avatar

Foot Traffic Data API - Visits, Trade Area, Demographics

Pricing

from $6.00 / 1,000 place or chain returneds

Go to Apify Store
Foot Traffic Data API - Visits, Trade Area, Demographics

Foot Traffic Data API - Visits, Trade Area, Demographics

Get foot traffic data for any US retail location, shopping center or chain: visits and unique visitors, trends by day, week or month, dwell time, visitor loyalty, the true trade area polygon, trade area demographics, where else those visitors shop, rankings against competitors, and retail sales.

Pricing

from $6.00 / 1,000 place or chain returneds

Rating

0.0

(0)

Developer

Nabeel Hassan

Nabeel Hassan

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

Measure how many people visit any US retail location, shopping center or chain - and when they come, how long they stay, how often they return, where they travel from, who they are, where else they shop, and how the place ranks against its competitors.

What this actor does

  • Visits and visitors, with the panel behind them. Every visit row carries the extrapolated totals for the whole population and the panel counts the provider actually observed. A modelled 433,000 visits built on 11,500 observed ones is a different claim from one built on 800, and only one of those two numbers tells you which you are looking at.
  • Traffic over time. Daily, weekly or monthly trends, and breakdowns by day of the week, by hour of the day and by dwell time band, with the average and median minutes stayed.
  • Loyalty. Visitors split by how many times they came back, as counts and as percentages, with the average and median visits per visitor.
  • The real trade area. The GeoJSON polygon of where the visitors actually travelled from, drawn to enclose a chosen share of the traffic, plus a drive-time variant and the list of census block groups that sent them.
  • Trade area demographics. Who lives in that polygon: census demographics and, where your plan covers them, population statistics, consumer landscape, market outlook, spending patterns, workplace and persona segments. Benchmarked nationwide or against the state, for the potential population or only the block groups that actually visited.
  • Visitor journey. The other chains and the other places those same visitors frequent, with the share of visitors each accounts for and the distance from the subject.
  • Rankings. Where a venue sits nationwide, in its state, its DMA, its CBSA and within a radius - against its own chain, its category or its whole business domain, on raw visits or on visits per square foot - plus the venues ranked immediately around it.
  • Retail sales. Spend, transaction counts and average ticket size, as an overview or over time.
  • Pay per result. You are charged for rows carrying a real record. Entities with no data over the window, reports the provider withholds, and searches that match nothing are all free.

Bring your own key

This actor calls the provider with your own API key. Paste it into the API key field, or set it as the DATA_API_KEY secret. Nothing runs on anyone else's credentials, and a run without a key ends cleanly with an explanation rather than failing.

API access needs a paying account with the API add-on enabled; your customer success manager issues the key and sets which entities and data sets your account may read.

Every report takes the provider's own identifier, spelled venue:4ea4f76f1f766e7bbdeccd61 - the apiId column, not the bare entityId. Run entity search first with a name, a point and radius, or a category. Two columns there are worth reading before you spend anything on reports: isFlagged, because the provider will not produce reports for a flagged entity, and isPermitted, because a search can legitimately return venues your account is not cleared to report on.

Read the panel column

The provider observes a sample and models the rest. panelVisits is the observation and visits is the model. They are both on every row for a reason: a thin panel makes a precise-looking total much less precise than it appears.

One case needs care. When you set a home or work distance filter, the provider applies it to the extrapolated visits and, in its own words, leaves the panel count showing the full unfiltered panel. The two then describe different populations and their ratio means nothing. Every row from such a run carries panelIsUnfiltered set to true, and the run logs a warning, so the trap is visible rather than waiting in a spreadsheet.

What this actor will not do

The provider's API can also create, rename and delete custom points of interest and tags on your account. Those endpoints are deliberately not implemented here. This actor only reads. An actor should not be able to delete somebody's saved locations, so it cannot.

Example output

{
"recordType": "visitMetrics",
"requested": "venue:4ea4f76f1f766e7bbdeccd61",
"apiId": "venue:4ea4f76f1f766e7bbdeccd61",
"found": true,
"name": "Chuck E. Cheese's",
"entityType": "venue",
"category": "Attractions",
"startDate": "2026-01-01",
"endDate": "2026-06-30",
"visits": 433202,
"visitors": 184092,
"panelVisits": 11546,
"panelVisitors": 5655,
"panelIsUnfiltered": false,
"visitDurationSegmentation": "10MinOrLonger"
}

FAQ

What is foot traffic data and where does it come from?

Foot traffic data counts visits to a physical place. This provider observes a panel of mobile devices, identifies which of them visited a location and for how long, and extrapolates from that sample to an estimate for the whole population. That is why every row here carries both figures: panelVisits is what was seen and visits is what was modelled from it.

What is the difference between visits and visitors?

A visit is one trip to the place. A visitor is one person, however many trips they made. A venue with 433,000 visits from 184,000 visitors is seeing each person come back about 2.4 times over the window - which is the number the loyalty mode breaks down properly, band by band.

How do I get the trade area for a store?

Run trade area mode with the entity ID and a date range. It returns the GeoJSON MultiPolygon of where the visitors actually came from, drawn to enclose the share of traffic you set - 70 percent is the usual default. Use trade area by drive time for a travel-time ring instead, and visits by block group when you want the trade area as a list of neighbourhoods rather than as a shape.

What is the difference between a true trade area and a mile ring?

A mile ring is a circle drawn on a map. A true trade area is built from the census block groups the visitors actually came from, so it follows roads, rivers and rival stores rather than geometry. The demographics mode accepts all three methods - true trade area, drive time and mile ring - and each needs its own sizing input, which this actor sends without the others because the endpoint rejects the wrong combination rather than ignoring it.

Can I profile the people in a trade area?

Yes, with trade area demographics. Choose potential to profile everyone living in the trade area, or captured to profile only the block groups that actually sent visitors - a smaller and usually more flattering number. Access is per data set: census is standard, and the consumer landscape, spending pattern, workplace and persona sets depend on your plan. A data set your plan does not include is refused with a clear message rather than returned empty.

How do I compare a location against its competitors?

Ranking overview returns where the venue sits nationwide, in its state, its DMA, its CBSA and within a radius you choose, against its own chain, its category or its whole business domain. Top ranked lists the strongest venues in that scope and closely ranked lists the ones immediately above and below. Rank on visitsPerSqft rather than visits when you are comparing places of different sizes.

Why does a ranking row say found false with a note?

Because the provider can refuse a ranking for one entity inside an otherwise successful response, by writing a reason where the rank should be - usually because the venue is flagged or unverified. This actor reads that per entity and reports the reason rather than recording a silent null rank, and rows like that are never charged.

Why did my report come back as still being built?

Reports are cached rather than computed on demand. The first request for a cold report returns an in-progress status and the provider's documented path is to ask again until it is warm. This actor does that automatically, waiting between attempts. The provider states that in-progress responses do not count against your weekly quota, so the retries are free; only the eventual answer is counted.

What are the rate limits?

The general ceiling is ten calls a second with up to five concurrent processes. On top of that there are per-family quotas: report preparation, point of interest queries and ranking reports each have their own hourly and per-minute allowances, and there is a weekly cap on how many distinct entities you may query, which renews on Sunday. This actor paces itself, honours the wait on a rate limit response, and reports the weekly cap as its own kind of problem because waiting will not clear it.

Can I report on many places at once?

Visit metrics, visit trends and block groups accept up to 100 entities per request, and this actor batches your list into hundreds automatically. Every other report reads one entity at a time. Note that switching on the nearby activity radius collapses a bulk request to its first entity only, which is why this actor never combines the two.

What does it cost?

Pricing is per result. You pay for rows that carry a real record: a place, a visit summary, a trend or breakdown bin, a trade area, a demographic attribute, a journey destination, a ranking, a sales metric or a block group. Entities with no data over the window, reports the provider withholds for privacy or for a flagged entity, and searches that match nothing are all free. Apify platform usage is included in the per-result price.

Does the actor fail if my key is wrong?

No. A missing key, a refused key, an exhausted weekly quota and an input that needs filling in all end the run cleanly with the reason as the run's status message. Only a real fault - a provider outage, or a bug here - fails a run.

Keyword map

foot traffic data API, foot traffic counts by location, retail location intelligence API, visits and visitors data, trade area analysis API, true trade area polygon, trade area demographics, drive time trade area, dwell time data, visitor loyalty data, customer journey data, cross shopping data, retail benchmarking API, visits per square foot, shopping center foot traffic, chain performance data, site selection data, census block group visits, retail sales data by location, POI visit data.