# Eye Care Industry Bundle — U.S. & Puerto Rico location dataset

All 55,719 locations in U.S. & Puerto Rico, as one CSV: 146 fields per record, file built October 10, 2026. $289 one-time, with up to 10 real rows free before you buy.

Canonical URL: https://locationlists.com/data/eye-care-practice-list

55,719 US eye care locations in one CSV, every state, DC and Puerto Rico. The 13 chain lists come from each chain's own locator: America's Best 1,072, MyEyeDr. 934, LensCrafters 916, Visionworks 763, Target Optical 627, Costco Optical 619, Sam's Club Optical 550, Pearle Vision 446, Warby Parker 359, Stanton Optical 326, Eyemart Express 266, Clarkson Eyecare 182 and Eyeglass World 121. Then 35,794 optometry and ophthalmology practices from the federal NPI registry (its 41,513 less those at a chain store's address or the same practice filed twice, which are merged into one row), and 12,765 independent optical stores, clinics and offices that neither the chains nor the registry list. Each physical place is one row: an NPPES practice at a chain store's address, with no suite or the store's own suite, is the practice that runs the store's eye exams, so the chain's row is kept and takes its NPI and specialty (3,390 chain rows carry one), and mergedNames names the practices folded in. Walmart Vision & Glasses is not in it: Walmart's site cannot be read without a paid unblocking service.

## The figures

- Records: 55,719 locations
- Coverage: U.S. & Puerto Rico
- Fields: 146
- Price: $289 one-time, CSV download, commercial license (https://locationlists.com/license)
- Snapshot built on October 10, 2026. Not rebuilt on a schedule.
- File last modified: 2026-10-10

The file has all 55,719 locations in one download. Building the same list by searching one area at a time tends to miss places, and a missed place looks like a gap in coverage that is not really there.

## Fields

- `brand`: The chain (in the bundle: the member list the row comes from)
- `name`: Location name (chain and city; the NPPES or Overture name for practices and independents)
- `address`: Street address
- `city`: City
- `state`: Two-letter state code
- `zip`: Five-digit ZIP code
- `phone`: Phone number
- `latitude`: Latitude
- `longitude`: Longitude
- `website`: The location's own page or website
- `country`: US
- `brandsAtLocation`: Every bundle member listed at the same street, ZIP and phone, so a buyer can collapse to one row per location
- `address2`: Suite or unit, where published
- `address_quality`: complete, no_house_number, po_box, missing_city_or_zip or missing
- `affirm`: TRUE when the store offers Affirm financing
- `appointmentUrl`: The chain's booking link for the store
- `businessCenter`: Y when it is a Costco Business Center
- `careCredit`: TRUE when the store takes CareCredit
- `certifiedDate`: Date the NPI was certified
- `chainName`: NPPES parent organisation name, where the practice gives one
- `clubName`: Sam's Club club name
- `clubServices`: Every service the club lists
- `county`: County name
- `county_fips`: Five-digit county FIPS code
- `county_note`: Set when the ZIP code spans more than one county
- `directionsUrl`: Google Maps directions link to the address
- `email`: Email address, where published
- `examBookingUrl`: Link to book an eye exam
- `examPracticeArrangement`: How the eye exam practice in the store is set up: employed doctors, a sublease, or a professional corporation (named)
- `examPracticeName`: The optometry practice (an organisation) that gives the eye exams in the store
- `eyeExamsOffered`: Y when the chain's own record says the location gives eye exams, N when it says it does not, blank when the source does not say
- `facebook`: Facebook page
- `facebookUrl`: The store's Facebook page
- `facilityType`: NPPES practice: optometry, ophthalmology, or both (OD + MD)
- `fax`: Fax number
- `featuredFrameBrands`: Frame brands the store features
- `geo_precision`: How the coordinates were arrived at: the source's own map point, or a geocode of the address, ZIP centre or city centre
- `globalLocationNumber`: The club's GS1 global location number
- `googleAttributesYes`: Google business attributes the chain marks yes (restroom, debit card...)
- `googleCategories`: The Google business categories the chain lists the store under
- `googleMapsUrl`: Google Maps link the chain publishes
- `googlePlaceId`: Google place id the chain publishes for the location
- `hearingAidCenter`: Y when the warehouse or club has a hearing aid center
- `hours`: Opening hours for the week, one line
- `hours_fri`: Friday hours
- `hours_mon`: Monday hours
- `hours_sat`: Saturday hours
- `hours_sun`: Sunday hours
- `hours_thu`: Thursday hours
- `hours_tue`: Tuesday hours
- `hours_wed`: Wednesday hours
- `instagramUrl`: The store's Instagram page
- `languages`: Languages the store lists
- `legacyPracticeName`: The name the practice traded under before MyEyeDr. bought it
- `locationName`: The store's name in the chain's locator
- `locationType`: What the location is: optical store, optometry office, optical department in a store or club, ophthalmology practice, LASIK center
- `locationsWithSameName`: How many rows in the list share this name: 1 is a single-site practice
- `mergedFrom`: The other lists' rows for this same place, merged into this one (list: name); their fields fill this row's blanks
- `mergedNames`: Names of the rows merged into this one, such as the NPPES practice that runs a chain store's eye exams
- `mergedPhones`: Phone numbers of the merged rows that differ from this row's phone
- `naicsCode`: NAICS code
- `naicsCode2`: Second NAICS code
- `naicsTitle`: NAICS title
- `naicsTitle2`: Second NAICS title
- `npi`: The practice's NPI number
- `npisAtAddress`: How many NPIs of the practice share this address
- `openDate`: The date the store opened, as the chain publishes it
- `openingDate`: Opening date, where the locator gives one
- `operatingBrand`: The banner on the door when a list carries several (Eyemart Express, Vision 4 Less, Eyewear Express)
- `opticalPhone`: The optical department's own phone
- `overtureBrand`: Brand tag Overture gives the place, if any
- `overtureCategory`: Overture Maps category the place is filed under
- `overtureConfidence`: Overture's confidence that the place exists (0-1)
- `overtureId`: Overture Maps place id
- `overtureRelease`: Overture Maps release read
- `overtureSources`: The datasets Overture built the place from
- `overtureUpdated`: When Overture's source last updated the place
- `parentCompany`: The company that owns or runs the chain
- `parentTicker`: The owner's stock ticker, where it is listed
- `paymentForms`: Payment forms accepted
- `pharmacy`: Y when the warehouse or club has a pharmacy
- `regionCode`: Costco region code
- `sicCode`: SIC code
- `sicCode2`: Second SIC code
- `sicTitle`: SIC title
- `sicTitle2`: Second SIC title
- `sourceUrl`: Where the row was read
- `spanishService`: Spanish translation service note
- `src_americas_best`: Americas best, from the store page's schema.org data or the chain's feed
- `src_areaServed`: Area served, from the store page's schema.org data or the chain's feed
- `src_brand`: Brand, from the store page's schema.org data or the chain's feed
- `src_comingsoon`: Comingsoon, from the store page's schema.org data or the chain's feed
- `src_currenciesAccepted`: Currencies accepted, from the store page's schema.org data or the chain's feed
- `src_entity`: Entity, from the store page's schema.org data or the chain's feed
- `src_entity_id`: Entity id, from the store page's schema.org data or the chain's feed
- `src_id`: Id, from the store page's schema.org data or the chain's feed
- `src_keywords`: Keywords, from the store page's schema.org data or the chain's feed
- `src_makesOffer`: Makes offer, from the store page's schema.org data or the chain's feed
- `src_non_stop`: Non stop, from the store page's schema.org data or the chain's feed
- `src_open_or_closed`: Open or closed, from the store page's schema.org data or the chain's feed
- `src_opening_status`: Opening status, from the store page's schema.org data or the chain's feed
- `src_openyn`: Openyn, from the store page's schema.org data or the chain's feed
- `src_paymentAccepted`: Payment accepted, from the store page's schema.org data or the chain's feed
- `src_priceRange`: Price range, from the store page's schema.org data or the chain's feed
- `src_projectedopendate`: Projectedopendate, from the store page's schema.org data or the chain's feed
- `src_reopen_date`: Reopen date, from the store page's schema.org data or the chain's feed
- `src_root_category_id`: Root category id, from the store page's schema.org data or the chain's feed
- `src_schedulershowyn`: Schedulershowyn, from the store page's schema.org data or the chain's feed
- `src_service_area_only`: Service area only, from the store page's schema.org data or the chain's feed
- `src_service_areas`: Service areas, from the store page's schema.org data or the chain's feed
- `src_showinlocatoryn`: Showinlocatoryn, from the store page's schema.org data or the chain's feed
- `src_statustypeid`: Statustypeid, from the store page's schema.org data or the chain's feed
- `status`: Open on every row (closed and coming-soon locations are left out)
- `statusType`: The chain's own status for the store (Open)
- `storeEmail`: The store's own mailbox (a store address, not a person's)
- `storeId`: The chain's own store, office, warehouse or club number
- `storePage`: The store's page on the chain's site
- `storeType`: Optometry office, optical store, eye care clinic, ophthalmology practice or LASIK center
- `subType`: NPPES taxonomy specialty
- `timezone`: Time zone
- `timezone`: Time zone
- `uberallId`: Visionworks' locator id for the store
- `updatedDate`: Date the row was built
- `warehouseHours`: Warehouse opening hours
- `warehouseName`: Costco warehouse name
- `warehouseOpenDate`: Warehouse open date
- `warehousePhone`: Warehouse main phone
- `yext_additionalHoursText`: Additional hours text, as the chain's own store record publishes it
- `yext_c_VisionInsurance_additionalText`: Vision insurance additional text, as the chain's own store record publishes it
- `yext_c_VisionInsurance_sectionTitle`: Vision insurance section title, as the chain's own store record publishes it
- `yext_c_brandStoreID`: Brand store id, as the chain's own store record publishes it
- `yext_c_brandsOffered`: Brands offered, as the chain's own store record publishes it
- `yext_c_conditionsWeTreat`: Conditions we treat, as the chain's own store record publishes it
- `yext_c_dInsuranceBrand_clickthroughUrl`: D insurance brand clickthrough url, as the chain's own store record publishes it
- `yext_c_insuranceSectionInsuranceList`: Insurance section insurance list, as the chain's own store record publishes it
- `yext_c_linkedLocation_c_officeType`: Linked location c office type, as the chain's own store record publishes it
- `yext_c_linkedLocation_c_pagesURL`: Linked location c pages url, as the chain's own store record publishes it
- `yext_c_linkedLocation_mainPhone`: Linked location main phone, as the chain's own store record publishes it
- `yext_c_medicaid`: Medicaid, as the chain's own store record publishes it
- `yext_c_servicesWeOffer`: Services we offer, as the chain's own store record publishes it
- `yext_c_vintageName`: Vintage name, as the chain's own store record publishes it
- `yext_paymentOptions`: Payment options, as the chain's own store record publishes it
- `yext_ref_reviewsAgg_reviewCount`: Ref reviews agg review count, as the chain's own store record publishes it
- `yext_services`: Services, as the chain's own store record publishes it
- `yext_timezone`: Timezone, as the chain's own store record publishes it
- `zip4`: ZIP+4 extension, where known

In the header but under 1% filled, so not in this release: doctorsOnSite, examPracticeWebsite, insurancePlans, locationDescription, locationSubtitle, relocationDate, src__id, src_bringInPrescription, src_contactPoint_@type, src_contactPoint_availableLanguage, src_contactPoint_contactType, src_contactPoint_telephone, src_country, src_email, src_eyeglass_world, src_faxNumber, src_price_range, src_sameAs, src_services, src_store_handle, src_timetap_handle, telehealthExams, yext_addressHidden, yext_alternateNames, yext_androidAppUrl, yext_appleActionLinks_appName, yext_appleActionLinks_appStoreUrl, yext_appleActionLinks_category, yext_appleActionLinks_quickLinkUrl, yext_appleBusinessId, yext_appleCompanyId, yext_bingWebsiteOverride, yext_brandReference_entityId, yext_brandReference_name, yext_brands, yext_c_VisionInsurance_brands_description, yext_c_additionalName, yext_c_awards_height, yext_c_awards_url, yext_c_awards_width, yext_c_brandType, yext_c_clickToCall, yext_c_comingSoon, yext_c_drWebsiteURL, yext_c_examServices, yext_c_eyeExamAvailable, yext_c_eyeExamOptions, yext_c_eyeExams, yext_c_fees_contractFeesAndOptions, yext_c_fees_dilationFees, yext_c_fees_examFeesAndOptions, yext_c_fees_retinalImagingFees, yext_c_firstTimeContactWearersEyeExams, yext_c_insuranceAccepted, yext_c_legacyBrandStoreID, yext_c_linkedLocation_entityId, yext_c_linkedLocation_id, yext_c_locationAvailability, yext_c_oDStoreID, yext_c_officeType, yext_c_openMonth, yext_c_openingDate, yext_c_openingSoon, yext_c_paymentTypes, yext_c_storeName, yext_c_storeType, yext_c_virtualVisionEligibleState, yext_categoryIds, yext_closed, yext_displayCoordinate_latitude, yext_displayCoordinate_longitude, yext_dropoffCoordinate_latitude, yext_dropoffCoordinate_longitude, yext_emails, yext_facebookAbout, yext_facebookDescriptor, yext_facebookName, yext_facebookOverrideCity, yext_facebookPageUrl, yext_facebookParentPageId, yext_facebookVanityUrl, yext_facebookWebsiteOverride, yext_fax, yext_featuredMessage_description, yext_firstPartyReviewPage, yext_geomodifier, yext_googleAccountId, yext_googleAttributes_has_curbside_pickup, yext_googleAttributes_has_delivery, yext_googleAttributes_has_delivery_same_day, yext_googleAttributes_has_in_store_pickup, yext_googleAttributes_has_in_store_shopping, yext_googleAttributes_has_wheelchair_accessible_entrance, yext_googleAttributes_has_wheelchair_accessible_parking, yext_googleAttributes_is_transgender_safespace, yext_googleAttributes_pay_check, yext_googleAttributes_pay_credit_card, yext_googleAttributes_pay_debit_card, yext_googleAttributes_requires_appointments, yext_googleAttributes_requires_cash_only, yext_googleAttributes_welcomes_lgbtq, yext_googleCid, yext_googleEntityRelationship_placeId, yext_googleEntityRelationship_type, yext_googleWebsiteOverride, yext_instagramHandle, yext_iosAppUrl, yext_isoRegionCode, yext_languages, yext_linkedInUrl, yext_locationComUrl, yext_neighborhood, yext_openDate, yext_pickupCoordinate_latitude, yext_pickupCoordinate_longitude, yext_priceRange, yext_productLists_ids, yext_ref_reviewsAgg_averageRating, yext_ref_reviewsAgg_publisher, yext_reservationUrl_displayUrl, yext_reservationUrl_preferDisplayUrl, yext_reservationUrl_url, yext_reviewGenerationUrl, yext_routableCoordinate_latitude, yext_routableCoordinate_longitude, yext_tikTokUrl, yext_timeZoneUtcOffset, yext_tollFreePhone, yext_twitterHandle, yext_yearEstablished, yext_yelpWebsiteOverride, yext_yextDropoffCoordinate_latitude, yext_yextDropoffCoordinate_longitude, yext_yextPickupCoordinate_latitude, yext_yextPickupCoordinate_longitude, yext_yextRoutableCoordinate_latitude, yext_yextRoutableCoordinate_longitude, yext_yextWalkableCoordinate_latitude, yext_yextWalkableCoordinate_longitude, yext_youTubeChannelUrl.

## What we did to this data

Unified 5 city spellings, shortened 32,200 ZIP codes, added the county to 52,509 listings, re-placed 8 misplaced map points, flagged 346 incomplete addresses and measured 55,719 rows. Rebuilt October 10, 2026 from npiregistry.cms.hhs.gov.

## How complete the key fields are

email 8%, phone 100%, website 32%, street address 100%, city 100%, state 100%, ZIP code 100%, latitude 100%, longitude 100%. 22 of 286 columns are filled on at least half the rows.

## The same dataset, for machines

- Record as JSON: https://locationlists.com/data/eye-care-practice-list/dataset.json
- Free sample, up to 10 real rows: https://locationlists.com/data/eye-care-practice-list/sample.csv or https://locationlists.com/data/eye-care-practice-list/sample.json
- Buy link (opens Stripe Checkout): https://locationlists.com/data/eye-care-practice-list/buy
- Bundle of: Optometry / ophthalmology practice (NPPES) (41,513); Independent (12,825); America's Best (1,072); MyEyeDr. (934); LensCrafters (916); Visionworks (763); Target Optical (627); Costco Optical (619); Sam's Club Optical (550); Pearle Vision (446); Warby Parker (359); Stanton Optical (326); Eyemart Express (266); Clarkson Eyecare (182); Eyeglass World (121)

## Questions

### Is a location ever in it twice?

No. Rows for one place are merged into one: the same street address, however it is spelled (Northeast or NE, 27th or 27, Brook Forest or Brookforest), with the same phone, name or owner; the same practice name at one house number or within 75 m; or the same phone and name a few doors apart. An NPPES practice at a chain store's address, with no suite or the store's suite, is merged into the store's row. The chain's row is kept and takes the NPI, specialty and other fields of the rows folded into it; mergedNames and mergedFrom name them. Different businesses at one address, such as two practices in a medical building or an independent optometrist beside a chain store, stay separate rows.

### Why are there so many columns?

Because each list keeps every field its source publishes and the bundle keeps all of them: a column belongs to the lists whose source has it and is blank for the rest. brand tells you which list a row comes from.

### Is Walmart Vision & Glasses in it?

No. Walmart's site answers automated requests with a robot check, and reading its store pages needs a paid unblocking service. Its centers are left out of the independents too, so no row is a Walmart store.

### Does it name the eye doctors?

No. These are locations. Where the chain names the practice that gives the exams, the practice is kept; doctors' names, bios and photos are not.

### How current is it?

Snapshot built on October 10, 2026. It is a one-time snapshot and is not rebuilt on a schedule.

### How is this data cleaned?

Every rebuild runs the same steps and counts what each one changed. For the current file, rebuilt October 10, 2026 from npiregistry.cms.hhs.gov: Merged 0 duplicate listings that had the same business name, street address and ZIP code, keeping every filled-in detail from both (October 10, 2026). Unified 5 city names written more than one way within the same ZIP code (for example with and without a space or an abbreviation) to the US Census Bureau spelling (October 10, 2026). Corrected 0 misspelled city names to the US Census Bureau place name for their ZIP code (October 10, 2026). Shortened 32,200 ZIP codes to the five-digit code every address filter expects, keeping the delivery-route segment in a column of its own (October 10, 2026). Added map coordinates to 0 listings that had none, from the US Census Bureau address geocoder or, where the street address could not be matched, the centre of the ZIP code (October 10, 2026). Set the county and its federal county code on 52,509 listings, matched to the US Census Bureau county list from the county the source records, the listing's map point, or its ZIP code area (October 10, 2026). Checked every map point against the state in its address and re-placed 8 points that fell outside that state (October 10, 2026). Flagged 346 addresses that are incomplete, a PO box, or missing a house number, in an address quality column (October 10, 2026). Checked that the row count, state count and field completeness published for this file were measured from the file itself (October 10, 2026).

### Isn't this free on npiregistry.cms.hhs.gov?

The underlying records are public on npiregistry.cms.hhs.gov. What you pay for is the work between that public release and this file: unified 5 city spellings, shortened 32,200 ZIP codes, added the county to 52,509 listings, re-placed 8 misplaced map points, flagged 346 incomplete addresses and measured 55,719 rows. The current file was rebuilt October 10, 2026 from npiregistry.cms.hhs.gov. Doing it yourself means downloading the full release, repeating each of those steps, and repeating them again every time the source updates.

### How complete is each field?

Measured on every row of the current file, the share of rows that carry each key field: email 8%, phone 100%, website 32%, street address 100%, city 100%, state 100%, ZIP code 100%, latitude 100%, longitude 100%. 22 of 286 columns are filled on at least half the rows, and 32 are empty in every row.
