2gis API2gis.ru ↗
Search for businesses across Russian cities and retrieve detailed company profiles including contact information, locations, and services from the 2GIS business directory. Find exactly what you need by looking up specific companies or browsing by category to discover new businesses in any Russian city.
curl -X GET 'https://api.parse.bot/scraper/c52211d8-4777-48ae-b146-478d77dace4f/search_companies?city=%D0%9D%D0%BE%D0%B2%D0%BE%D1%81%D0%B8%D0%B1%D0%B8%D1%80%D1%81%D0%BA&page=1&query=%D0%BA%D0%BE%D1%84%D0%B5%D0%B9%D0%BD%D1%8F' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace 2gis-ru-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Walkthrough: 2GIS SDK — bounded, re-runnable; every call capped."""
from parse_apis.api_2gis_ru_api import TwoGis, NotFound
client = TwoGis()
# Search for coffee shops in Novosibirsk, limited to 3 results.
for company in client.companies.search(query="кофейня", city="Новосибирск", limit=3):
print(company.name, company.address, company.rating)
# Drill-down: take one result and get full details.
hit = client.companies.search(query="аптека", city="Москва", limit=1).first()
if hit:
try:
full = hit.details()
print(full.name, full.address, full.working_hours)
except NotFound as e:
print("not found:", e)
print("exercised: companies.search, CompanySummary.details")
Search for companies by name or category in a given city. Returns paginated results with basic company info including name, address, contact details, category, and rating. Results are ordered by relevance within the specified city.
| Param | Type | Description |
|---|---|---|
| cityrequired | string | City name in Russian (e.g. 'Новосибирск', 'Москва'). |
| page | integer | Page number for paginated results. |
| queryrequired | string | Search query — company name, category, or keyword (e.g. 'кофейня', 'аптека'). |
{
"type": "object",
"fields": {
"page": "current page number",
"items": "array of company summaries",
"total": "total number of matching companies"
},
"sample": {
"data": {
"page": 1,
"items": [
{
"id": "70000001059067661",
"name": "Куликовский, кофейня-кондитерская",
"email": "[email protected]",
"phones": [
"+1 (555) 012-3456",
"+1 (555) 012-3457"
],
"rating": 4.5,
"address": "улица Кирова, 48",
"website": "kulikov.com",
"category": "Кофейни"
}
],
"total": 376
},
"status": "success"
}
}About the 2gis API
The 2gis API on Parse exposes 2 endpoints for the publicly available data on 2gis.ru. Calls return JSON over HTTPS and are billed per successful response.
Pin a release with the API-Snapshot-Version header so canonical updates don't silently change your contract.