Rich Attributes

Our Rich Attributes expand on the standard details about a Place to provide even more meaningful metadata. More granular category tags. Open hours. Closed On Dates. And much more.


Helpful Links

Column Definitions: Rich Attributes


  • category_tags provide higher-granularity category information beyond what can be found in a NAICS code label. So instead of just "Full-Service Restaurant" (NAICS 722511), we'll also provide tags like 'Pizza', 'Lunch', 'Dinner', 'Drive Through', and 'Late Night' so that you can glean more meaningful details about that specific restaurant. Trying to find a place that serves coffee? Our 'coffee shop' tag spans more than 30 NAICS categorizations, giving you a much easier method to pinpoint specific places based on granular inputs.
  • Category information is conveyed as a list of descriptive words about the POI. e.g ['Mexican Food, Dinner]
  • Category tags are broadly available across NAICS codes though not every NAICS code will have them. Here is the full list of possible tags for each NAICS code. SafeGraph strives to label all relevant tags and will include up to 13 tags for any given POI.


The top-level domain(s) for the website(s) associated with the POI as provided and maintained by the POI itself. These will be provided as the domain names relevant to the business or operation in place at a given location. If there are multiple relevant domains (e.g. a unique website for a hotel but also the umbrella hotel chain website) we will include as many as relevant. Prior to June 2023, this had been known as the websites column.


The web URL for the POI's publicly available website. This will only be populated if a website exists specifically dedicated to the place, not just if for example there is an overarching corporate website. This attribute was introduced in the June 2023 release.


This is a 10 digit phone number in the US and Canada or a 12 digit phone number in Great Britain. We filter out toll-free numbers (e.g. 1-800) and strive to have POI-specific numbers (not franchise-level or corporate-level numbers).


The new format for open hours is a JSON string with days as keys and opening & closing times (in the POI's local time) as values.

  • Each JSON string is guaranteed to have all 7 days as keys
  • We indicate that a POI is closed for the day by giving it a value of "[]"
  • We indicate that a POI is open the entire day by using a format like: `
    • "Thu": [["0:00", "24:00"]]`
  • For POI that open and close multiple times throughout the day (e.g. a restaurant open in the morning and evening but not midday), we list multiple opening/closing pairs. For example:
    • “Sat": [["8:00", "13:00"], ["15:00", "22:30"]]
    • This indicates that a POI is open from 8 am to 1 pm and also from 3 pm to 10:30 pm on Saturday.
  • For POI that open and close on different days (e.g. a bar which opens on Tuesday at 6 pm and closes on Wednesday at 2 am), we use a format like:
    • "Tue": [["18:00", "24:00"]], "Wed": [["0:00", "2:00"]]

opened_on, closed_on, tracking_closed_since

These columns reflect the dates surrounding the known openings or closings of certain businesses. See our commentary on Determining when POI Open and Close for detailed information on our approach.


Store_id is the unique ID associated with a store as provided and maintained by the store/brand itself. This is a premium column only applicable to places with a safegraph_brand_id. Most store_ids can be found directly on store locators, but in some cases, the store_id is embedded within the store locator URL for the specific store. Note that there is no single source of truth for store_ids, and some first party datasets may not define store_id in the same manner which SafeGraph does, but we strive to provide the most widely used concept of store_id.

Typically, store_ids are alphanumeric codes unique to each location. However, they are not always alphanumeric. For example the store number for this store is 1615.

store_id is especially useful as join key when working with transaction data. For example, “TJ256Y8” may be the only location specific information within a transaction dataset. A Places dataset which also contains "TJ256Y8" as a store_id enables a join to contextualize transaction data (or other internal, store-level data) with SafeGraph places information.

Determining POI Open/Close (opened_on, closed_on, tracking_closed_since)

opened_on and closed_on dates are determined from metadata at the source level. If a new POI from an existing source repeatedly appears in our build pipeline, it is flagged as opened_on during the month in which it first appears. Similarly, if a POI from an existing source repeatedly disappears in our build pipeline, it is flagged as closed_on during the month in which it first disappears. opened_on dates are only inferred for POIs with a safegraph_brand_id whereas closed_on dates are attempted for both branded and non-branded POIs. POIs with an opened_on or closed_on date have been determined to be accurate within a ~60 day margin of error.

Open/Close features are currently supported in the following 11 countries:

  • iso_country_code = 'US'
  • iso_country_code = 'CA'
  • iso_country_code = 'GB'
  • iso_country_code = 'DE'
  • iso_country_code = 'FR'
  • iso_country_code = 'ES'
  • iso_country_code = 'IT'
  • iso_country_code = 'MX'
  • iso_country_code = 'JP'
  • iso_country_code = 'CN'
  • iso_country_code = 'SG'

For supported countries, if a POI has not yet been sourced consistently enough to provide the metadata needed to determine closed_on dates, then it will have a null value in the tracking_closed_since column. Outside of supported countries, the tracking_closed_since column should be ignored. In general, the SafeGraph Places product tracks opened_on and closed_on dates from as early as 2019-07 onward, and therefore, the majority of POIs that have a tracking_closed_since date will show a value of "2019-07."

We know that some POIs are permanently closed but are not confident in the exact closure date. These POIs show closed_on = '1900-01' to denote this uncertainty.

Note that temporary closures are not captured in open/close tracking. It became difficult to distinguish permanent closures from temporary closures at the onset of COVID-19, and this resulted in a relatively low count of POIs with closed_on values between "2020-03" and "2020-06" as we erred towards the side of caution to not mistakenly mark temporarily closed businesses as permanently closed.