Skip to content

Commit b6b5612

Browse files
authored
Scrape place reservation provider links
Adds reservation provider link extraction, normalization, and tests for Google Maps place pages.
1 parent 17bb220 commit b6b5612

3 files changed

Lines changed: 666 additions & 4 deletions

File tree

src/gmaps_scraper/models.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -270,6 +270,21 @@ def to_dict(self) -> dict[str, object]:
270270
}
271271

272272

273+
@dataclass(slots=True)
274+
class PlaceReservationLink:
275+
"""A visible booking or reservation provider link from a place page."""
276+
277+
label: str
278+
url: str
279+
280+
def to_dict(self) -> dict[str, object]:
281+
"""Convert a reservation link into a JSON-serializable dictionary."""
282+
return {
283+
"label": self.label,
284+
"url": self.url,
285+
}
286+
287+
273288
@dataclass(slots=True)
274289
class PlaceDetails:
275290
"""A parsed Google Maps place page."""
@@ -293,6 +308,7 @@ class PlaceDetails:
293308
located_in: str | None = None
294309
status: str | None = None
295310
website: str | None = None
311+
reservation_links: list[PlaceReservationLink] = field(default_factory=list)
296312
phone: str | None = None
297313
plus_code: str | None = None
298314
address_parts: AddressParts | None = None
@@ -334,6 +350,7 @@ def to_dict(self) -> dict[str, object]:
334350
"located_in": self.located_in,
335351
"status": self.status,
336352
"website": self.website,
353+
"reservation_links": [link.to_dict() for link in self.reservation_links],
337354
"phone": self.phone,
338355
"plus_code": self.plus_code,
339356
"address_parts": self.address_parts,

0 commit comments

Comments
 (0)