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.

Contents

Helpful Links

Column Definitions: Rich Attributes

category_tags

  • 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 is 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.

websites

The website(s) associated with the POI as provided and maintained by the POI itself. These will be provided as the domain names most relevant to the business or operation in place at a given location. If there are multiple relevant websites (e.g. a unique website for a hotel but also the umbrella hotel chain website) we will include as many as relevant.

phone_number

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).

open_hours

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

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.

Key Concepts

Determining when POI Open and Close

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. These flags are added to the Places product permitting final QA checks and overall data hygiene.

Temporary closures are not captured in open/close tracking, and it became difficult to distinguish permanent closures from temporary closures at the onset of COVID-19. 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.

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. 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."

Please note that closed_on values are over-indexed on "2020-01" as January 2020 was the first Places release featuring the open/close columns . At this time, only branded POIs (POIs with a safegraph_brand_id) contained enough metadata to determine a true store closure during that month. Non-branded POIs with a "2020-01" closed_on value implies that the POI closed sometime before January 2020, but we do not have enough metadata history to determine the exact yyyy-mm.

A second spike in closed_on values occurred in October of 2021 thanks to new information about more than 130k "longtail" POIs. Like the January 2020 anomaly, the "2021-10" closed_on value implies that the POI closed sometime before October 2021, but we cannot determine the exact yyyy-mm.

For countries outside of the US, CA and GB, we anticipate non-null values for tracking_closed_since, closed_on, and opened_on beginning in the November 2021 release which will be the first time where we have a long enough track record to support these columns.

All other closed_on values are precise within a < 60 day margin of error.

The opened_on, closed_on and tracking_closed_since columns are specific to Places. These are not available in stand-alone Geometry or Patterns purchases. If Places is purchased in combination with Geometry and/or Patterns, the Geometry and Patterns specific fields will be null for any POIs with a closed_on date. Please reference Column Ordering for details on where these columns exist per product combination.

Known Artifacts

closed_on First Featured

Please note that closed_on values are over-indexed on "2020-01" as January 2020 was the first Places release featuring the open/close columns. At this time, only branded POIs (POIs with a safegraph_brand_id) contained enough metadata to determine a true store closure during that month. Non-branded POIs with a "2020-01" closed_on value implies that the POI closed sometime before January 2020, but we do not have enough metadata history to determine the exact yyyy-mm. All other closed_on values are precise within a < 60 day margin of error.

opened_on for "non-branded" POIs

Please note that opened_on dates are only inferred for POIs with a safegraph_brand_id. We are working towards sourcing more robust metadata for "non-branded" POIs to continue to add to our offering.


What’s Next