Table des matières
L'ajout de fonctionnalités avancées pour l'annuaire des entreprises locales s'est avéré être un problème de nettoyage des données avant même de devenir une mise à jour du site web.
Je m'en suis rendu compte après avoir récupéré un nouvel ensemble de dossiers provenant d'une clinique dentaire de Chicago via Outscraper. Le fichier exporté contenait 930 lignes, mais seulement 500 identifiants Google Place uniques, car Enrichissement des prospects et des contacts a renvoyé des lignes distinctes pour certains e-mails et contacts professionnels.
Le fait de télécharger les 930 lignes sans les vérifier au préalable risquait d'entraîner la duplication de certaines fiches de cliniques et de divulguer des informations qui n'avaient pas leur place dans un annuaire public.
Dans la première partie de ce projet, j'ai utilisé ChatGPT Work et un fichier JSON Outscraper exporté pour créer un annuaire consultable contenant 467 fiches de cabinets dentaires répondant aux critères. Les visiteurs pouvaient effectuer une recherche par nom de cabinet, catégorie, adresse ou code postal, puis comparer les informations disponibles sur les établissements.
La configuration initiale est décrite dans Comment créer un annuaire des entreprises locales en 6 étapes simples avec Outscraper.
Pour cette deuxième partie, j'ai regroupé les lignes d'enrichissement répétées et j'ai réappliqué les règles « Chicago », « operating-status », « dental-category » et « Place ID ». Il restait ainsi 475 fiches de cliniques pour l'annuaire mis à jour.
J'ai ensuite utilisé ChatGPT Work pour ajouter des pages de cabinet réutilisables, davantage de filtres de recherche, une pagination, un système de catégories à balises multiples et une carte interactive. Plutôt que de remplacer le « Chicago Dental Guide » d'origine, j'ai publié cette version améliorée sous la forme d'un annuaire distinct et mis à jour.
Réponse rapide : Comment améliorer un annuaire d'entreprises locales
- Regroupez les 930 lignes de données sources par identifiant Google Place.
- Créez un enregistrement public pour chacune des 500 cliniques distinctes.
- Conservez les e-mails d'enrichissement et les coordonnées personnelles dans un dossier privé.
- Réappliquer les règles relatives aux annuaires et conserver les 475 cliniques de Chicago.
- Ajoutez les 475 fiches publiques validées au répertoire mis à jour.
- Ajouter des pages consacrées aux cliniques, des filtres, un tri, une pagination, des groupes de catégories et une carte.
- Testez la version mise à jour, corrigez les problèmes de publication, puis publiez-la dans un répertoire public distinct.
Vous souhaitez collecter des informations sur les entreprises locales pour votre annuaire ? Utilisez le Outscraper Google Maps Scraper pour effectuer une recherche par catégorie et par lieu.
Utilisation Outscraper Google Maps Scraper de collecter des données publiques sur les entreprises par catégorie et par lieu, puis d'examiner ces informations avant de les ajouter à votre annuaire.
Quels changements ont eu lieu après la création du premier répertoire ?
La première édition du « Chicago Dental Guide » a démontré qu'un annuaire local pouvait fonctionner à partir d'un fichier JSON nettoyé.
Je suis parti de 500 fiches Outscraper et j'ai conservé 467 entrées qui répondaient aux critères du premier répertoire.
Ce que le premier répertoire comprenait déjà
Les visiteurs peuvent effectuer une recherche par :
- nom de la clinique ;
- catégorie dentaire ;
- adresse ;
- Code postal de Chicago.
Les fiches d'annonce affichaient les notes disponibles, le nombre d'avis, les numéros de téléphone, les sites web et les liens vers les avis.
Le site proposait également des raccourcis vers la catégorie « dentisterie », une recherche par lieu, des annonces les mieux notées, ainsi qu'une mise en page adaptative pour les ordinateurs de bureau et les appareils mobiles.
L'ensemble du processus de collecte, de filtrage et de publication est abordé dans le premier tutoriel consacré à l'annuaire des entreprises locales.

Pourquoi le répertoire a-t-il nécessité une deuxième mise à jour ?
La première version présentait encore des limites évidentes.
Il ne comprenait pas :
- une carte de travail comportant des repères indiquant l'emplacement des cliniques ;
- les pages consacrées à chaque clinique ;
- pagination ;
- filtres avancés ;
- des champs « heures d'ouverture » cohérents ;
- liens de réservation ;
- étiquettes de zones structurées.
Le fichier initial ne contenait pas non plus les coordonnées nécessaires à la création d'une véritable carte. La localisation des lieux s'appuyait principalement sur les adresses complètes et les codes postaux.
Pour la deuxième collecte, j'ai conservé la limite de 500 résultats et le paramètre « opérationnel uniquement », puis j'ai ajouté Enrichissement des prospects et des contacts.
Le fichier d'exportation mis à jour comprenait les coordonnées, les codes postaux, les noms de quartiers, les photos, les horaires d'ouverture, les liens de réservation, les profils des entreprises sur les réseaux sociaux et les champs d'enrichissement au niveau des personnes.
The enrichment emails and professional contact details were treated as private data. They were not added to the public clinic file or sent to the browser.
The source field called county also needed different wording. It contained values such as West Loop rather than Illinois counties, so I renamed it area_label in the prepared data.
Clean and Normalize the Updated Outscraper Data
Why 930 Rows Did Not Mean 930 Clinics
The new export contained:
- 930 source rows;
- 500 unique Google Place IDs;
- 430 additional enrichment rows;
- no missing Place IDs.
The 500 clinics were distributed like this:
- 247 clinics appeared in one row;
- 76 clinics appeared in two rows;
- 177 clinics appeared in three rows.
The repeated rows came from Leads & Contacts Enrichment. When several emails or professional contacts were found for one clinic, the export returned separate rows for those results.
The clinic-level fields remained consistent within each Place ID. The name, address, website, rating, coordinates, hours, photo, booking link, and company social profiles did not conflict across the repeated rows.
That made it possible to create one main public record for each clinic.
Group Records by Google Place ID
I grouped the source records by place_id and created one clinic-level object for every unique business.
The public master file contained all 500 unique clinics with no repeated Place IDs.
Each public record stored the data in clearer sections, including:
- clinic identity and categories;
- structured address fields;
- ZIP code and area label;
- latitude and longitude;
- public phone number and website;
- rating and review count;
- horaires d'ouverture ;
- booking link;
- approved company-level fields.
I then reapplied the original directory rules. Each record needed to:
- have a Chicago location;
- be marked as operational;
- have a relevant dental category or subtype;
- have a unique Google Place ID.
This produced 475 directory-ready clinics. The other 25 records were excluded because they were outside Chicago.
The result was eight listings higher than the first directory’s 467-record count. That difference does not prove that eight new clinics opened. The two files came from separate data collections, so the returned businesses and available fields were not identical.
Separate Public Business Data From Private Contact Data
The enrichment export included both clinic-level data and person-level contact data. Those fields needed separate files.
The private fields included:
- full names;
- first and last names;
- job titles;
- enrichment emails;
- contact phone numbers;
- personal LinkedIn profiles;
- other person-level social links;
- enrichment-source fields.
After exact repeated contact objects were removed, 779 distinct contact objects remained in the private file.
Advanced directory features work best with clean, structured business data.
The email wording also needed care. I used Leads & Contacts Enrichment, but I did not use the separate Email Address Verifier.
The results should therefore be described as found enrichment emails, not verified emails. All of those email values remained private during this project.
The link review found 48 suspicious URL values. Instead of displaying uncertain links, I changed those public link fields to null until they can be checked manually.

Use Google Maps scraper to collect enriched business records of dentists in Chicago to populate your local directory.
Add Richer Clinic Profile Pages
In the updated directory, ChatGPT Work uses one reusable clinic-detail component instead of creating hundreds of separate pages manually.
Create One Reusable Page for Every Clinic
All 475 clinic records in the updated directory can open a unique detail route.
The routes follow this structure:
/clinics/<safe-clinic-slug>--<place-id>
The clinic name creates a readable slug, while the Google Place ID keeps each route unique.
The final project checks found:
- 475 clinic-card detail links;
- 475 unique routes;
- no route collisions;
- no broken generated detail links.
Each listing card also includes a Clinic Details link. The reusable component reads the route, finds the matching clinic in the public JSON, and displays its available business details.
Show Approved Public Fields
The clinic pages can display these public fields when they are present:
- nom de la clinique ;
- category and dental subtypes;
- full address;
- area label;
- ZIP code;
- clinic phone number;
- site web ;
- rating and review count;
- Google review link;
- Google Maps link;
- working hours;
- booking link;
- accessibility details.
The structured about data can also contain service, payment, appointment, parking, and accessibility attributes. Only selected details that fit a consumer-facing dental directory were added to the page.
The public dataset can contain photo URLs and company social-profile fields when they are available. I did not rely on those fields as core clinic-page features in this version.
Enrichment emails were also excluded because the export did not contain a separately reviewed public clinic-email field.
Hide Missing Sections and Broken Actions
Not every clinic has the same amount of data.
The updated public dataset contained:
- 125 clinics without websites;
- seven clinics without phone numbers;
- 82 clinics without review links;
- 300 clinics without booking links;
- 123 clinics without working-hours data.
The reusable page checks each field before displaying a section or button.
A clinic without a website does not show a website button. A clinic without hours or a booking link does not show empty Working Hours or Appointments sections.
An unknown clinic route displays a Clinic not found message and a link back to the directory instead of showing an empty page.
The updated build passed without JavaScript compilation errors.
Keep Individual Contact Details Outside Public Pages
The public clinic pages use clinic-level fields such as the phone number, website, address, hours, booking link, review link, and map link.
They do not use:
- named professional contacts;
- enrichment emails;
- job titles;
- direct contact phone numbers;
- personal social profiles;
- owner profile fields.
Privacy checks found no private enrichment fields in the public JSON, website source, or compiled browser files.
The clinic-detail routes have passed data, route, privacy, and build checks.
Improve Search, Filters, and Local Browsing
The first directory allowed visitors to search by clinic name, category, address, or ZIP code.
The updated directory adds more controls so visitors can narrow the 475 clinic records without loading every card on one page.

Vous pouvez consulter le updated Chicago Dental Guide. The original directory remains unchanged. This directory is a research and comparison tool only. Business details can change, so visitors should confirm treatment options, insurance, availability, fees, and appointments directly with each clinic.
Add Filters, Sorting, Result Counts, and Pagination
The updated directory displays the number of clinics that match the active search and filters.
Visitors can narrow the records by:
- directory group;
- raw category or subtype;
- ZIP code;
- area label;
- minimum rating;
- minimum review count;
- website availability;
- booking-link availability;
- working-hours availability.
The sorting choices include:
- default order;
- clinic name A–Z;
- highest rating;
- highest review count.
The directory displays 12 clinic cards per page. This matches the existing three-column desktop card layout.
The unfiltered 475-record directory creates 40 pages. Tests confirmed that every clinic appeared exactly once across those pages, with no repeated cards, missing records, or broken clinic-detail links.
The directory returns to page one when a search, filter, or sorting choice changes.
It also keeps the active directory state when a visitor opens a clinic page and returns to the results.
A no-results search displays a clear message and a reset action instead of old cards or unusable pagination.
I did not add an Open Now filter. The opening-hours data is stored as display text rather than consistent, time-zone-aware schedule data, so the directory cannot calculate current availability reliably.
Use ZIP Codes and Area Labels for Local Browsing
ZIP filtering now reads the supplied postal_code field rather than extracting a ZIP code from the full address.
Four records contained valid nine-digit ZIP values without a ZIP+4 hyphen.
Par exemple :
606021708
was changed for display to:
60602-1708
The first five digits are used for the main ZIP filter.
This correction changed the ZIP 60602 result from 64 clinics to 65. The other checked results included 34 clinics for ZIP 60607 and 60 for ZIP 60625.
For larger city searches, the guide to scraping businesses by ZIP code explains how location-based searches can help collect records across densely populated areas.
The former county field is displayed only as an area label. It is not presented as an Illinois county or a confirmed Chicago neighborhood.
During testing, the area filters returned:
- West Loop: 33 clinics;
- South Loop: 24 clinics;
- Chicago Loop: 92 clinics.
Let Clinics Match More Than One Directory Group
The updated directory uses a multi-tag care taxonomy instead of forcing every clinic into one category.
Each of the 475 public clinic records can belong to more than one directory group when its public category and subtype data support it.
The current directory includes:
- 413 General Dentistry memberships;
- 65 Pediatric Dentistry memberships;
- 166 Cosmetic Dentistry memberships;
- 71 Orthodontics memberships;
- 84 Emergency Dentistry memberships;
- 135 Specialty Care memberships.
These numbers do not add up to 475 because the groups overlap. A total of 197 clinics belong to more than one group.
Nineteen clinics do not have enough structured category information for one of these directory groups. They remain searchable in the full directory rather than being assigned to a care type based only on their business names.
A clinic that belongs to several groups still appears only once in the results for the selected group.
Connect the Filtered Results to an Interactive Map
I used ChatGPT Work to add an interactive map to the updated directory using
- Leaflet;
- Leaflet MarkerCluster;
- OpenStreetMap tiles.
This approach did not require a paid map API key.
The map follows the full filtered result set rather than the current pagination page.
The data tests returned matching clinic and marker totals:
- no filters: 475 clinics and 475 markers;
- ZIP 60602: 65 clinics and 65 markers;
- West Loop: 33 clinics and 33 markers;
- General Dentistry: 413 clinics and 413 markers;
- Emergency Dentistry: 84 clinics and 84 markers;
- one-clinic name search: one clinic and one marker;
- no-results search: zero clinics and zero markers.
The coordinate review found 47 shared-location groups containing 131 clinics. These often represented several dental practices in the same building.
Marker clustering and close-range marker separation keep those clinics as separate selectable records instead of hiding one behind another.
Each marker popup is designed to show approved public information:
- nom de la clinique ;
- adresse ;
- rating and review count when available;
- clinic-detail link;
- Google Maps link.
The map uses the complete filtered result set rather than only the 12 clinics shown on the current pagination page. Clinic cards also include a Show on map action that moves to the correct location while preserving the active directory filters.
Outscraper also offers services for finding contact details, enriching existing records, exporting structured data, and connecting business-data workflows through the API.
Test the Advanced Local Business Directory Features and Fix Publishing Problems
Adding more features meant testing the data, routes, filters, map, and public files before publishing the updated directory.
I worked through the changes in separate stages to catch problems without replacing the original Chicago Dental Guide.
Add and Test One Feature at a Time
Before publication, I updated the project in this order:
- Group the 930 source rows by Place ID.
- Create separate public and private files.
- Reapply the original directory rules.
- Connect the 475 public clinic records to the updated build.
- Add reusable clinic-detail pages.
- Add filters, sorting, result counts, and pagination.
- Review and replace the original category logic.
- Add and check the interactive map.
This order helped me find data and logic problems before they reached the live website.
For example, it exposed:
- repeated enrichment rows;
- private contact fields mixed with public business fields;
- suspicious URLs;
- non-standard ZIP+4 values;
- category rules that hid valid specialties;
- records without enough structured data for shortcut groups.
What Passed Before Publication
Before publishing the updated directory, the project checks confirmed:
- 475 public clinics loaded;
- 475 unique Place IDs;
- no repeated clinic cards;
- no missing records across pagination;
- no broken generated clinic routes;
- no route collisions;
- no invalid map coordinates;
- no private enrichment fields in public files or browser assets;
- no JavaScript build errors.
The existing search behavior also remained available for clinic names, categories, addresses, and ZIP codes.
The build command completed successfully after the clinic-page, control, taxonomy, and map stages.
What Broke During Preview and Publishing
Previewing the updated directory caused some of the hardest problems in this project.
The isolated workspace failed to reliably expose the local Vite server. Vite failed while reading restricted network-interface information, so the browser was unable to reach the local preview.
I later created a hosted preview that returned a successful response but showed a blank page because the application had been packaged incorrectly.
Instead of replacing the original Chicago Dental Guide, I used ChatGPT Work to publish the advanced version as a separate public site. This kept the first directory unchanged while giving the updated version its own URL.
The updated directory is publicly accessible through a direct link, but it currently uses a noindex directive while the project is still being reviewed.
Compare Future Outscraper Exports by Place ID
Later Outscraper exports can be matched with the current records through the Google Place ID.
This is safer than matching only by clinic name. Business names, websites, phone numbers, and addresses can change or appear in different formats.
When collecting a new dataset, the Google Maps scraping getting started guide explains how to set categories, locations, result limits, and other task settings before running the export.
A later comparison can check changes in:
- rating and review count;
- phone number and website;
- address and category;
- operating status;
- horaires d'ouverture ;
- liens de réservation ;
- photos;
- approved public business fields;
- separately stored private contact records.
Suspicious or malformed links should remain outside the public file until they are checked.
A fresh export should also pass the same location, operating-status, category, Place ID, privacy, ZIP, URL, and missing-field checks before it is used to update the public directory.
Final Workflow for Updating a Local Business Directory
Use this workflow to move from a directory idea to a published website:
- Collect a new public-business-data export.
- Group repeated records by Google Place ID.
- Separate public business fields from private enrichment data.
- Reapply location, operating-status, and category rules.
- Test clinic pages, filters, pagination, map records, and missing fields.
- Publish the approved version without overwriting the previous directory until the update is confirmed.
Advanced directory features work best with clean, structured business data.
Use Outscraper Google Maps Scraper to collect records by category and location, then prepare the fields your directory needs.
FAQ
Questions et réponses les plus fréquentes
Une entreprise peut apparaître sur plusieurs lignes lorsque la fonctionnalité « Enrichissement des prospects et des contacts » détecte plusieurs adresses e-mail ou coordonnées professionnelles pour la même entreprise.
Dans ce projet, 930 lignes correspondaient à 500 identifiants Google Place uniques. Les 430 lignes restantes constituaient des résultats d'enrichissement supplémentaires.
Regroupement des enregistrements par place_id a créé un dossier médical public pour chaque entreprise et a évité la duplication des fiches médicales.
Dans le cadre de ce projet, les coordonnées personnelles n’ont pas été intégrées à l’annuaire public. Les fiches de cliniques publiées contiennent des informations publiques telles que les adresses, les sites web, les numéros de téléphone, les notes, les horaires d’ouverture, les liens de prise de rendez-vous et les données de localisation.
Oui. La première version du Chicago Dental Guide utilisait un fichier JSON statique contenant 467 fiches éligibles. L'annuaire public mis à jour utilise 475 fiches de cliniques normalisées et prend en charge la recherche, les pages de détails sur les cliniques, les filtres, le tri, la pagination, les groupes de catégories et la navigation sur carte.
La fréquence dépend de l'annuaire concerné et de la rapidité avec laquelle ses informations commerciales évoluent. Une vérification mensuelle ou trimestrielle constitue un bon point de départ pour contrôler les sites web, les numéros de téléphone, les notes, les horaires, les liens de réservation et le statut d'activité.
Pas nécessairement. ChatGPT Work m'a aidé à apporter des modifications au site web, tandis que je me suis chargé de définir les exigences, de vérifier les données, de tester les résultats et de répertorier les problèmes. Les projets plus complexes peuvent toutefois nécessiter une assistance technique pour les bases de données, les intégrations ou les mises à jour automatisées.
Non. Le « Chicago Dental Guide » original reste inchangé. La version avancée a été publiée sous la forme d'un annuaire public distinct comprenant 475 fiches de cliniques normalisées, des filtres supplémentaires, des pages détaillées sur les cliniques, une pagination, des groupes de soins à plusieurs balises et une navigation basée sur une carte.