Rusprofile APIrusprofile.ru ↗
Search Russian companies by name, INN, or OGRN. Retrieve profiles, director INN, OGRN, registration address, and hyperlinks via the Rusprofile API.
What is the Rusprofile API?
The Rusprofile API provides 4 endpoints for querying Russian company records from rusprofile.ru. Use search_companies to find companies by name, INN, or OGRN and get back paginated summaries including address and CEO name. Use get_company_profile or get_director_details to pull structured director information — full name, personal INN, role, and profile link — for any company identified by its Rusprofile internal ID.
curl -X GET 'https://api.parse.bot/scraper/952cd99d-a90c-45b2-85e9-3467c387dd77/search_companies?query=%D0%93%D0%B0%D0%B7%D0%BF%D1%80%D0%BE%D0%BC' \ -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 rusprofile-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: Rusprofile SDK — company search, profile details, director lookup, link extraction."""
from parse_apis.rusprofile_api import Rusprofile, CompanySummary, Company, Link, CompanyNotFound
rusprofile = Rusprofile()
# Search for companies by name — limit caps total items fetched.
for company in rusprofile.companysummaries.search(query="Газпром", limit=3):
print(company.name, company.inn, company.ogrn, company.address)
# Navigate from a search result to its full profile with director details.
first = rusprofile.companysummaries.search(query="Сбербанк", limit=1).first()
if first:
profile = first.details()
print(profile.name, profile.inn, profile.director.name, profile.director.inn)
# Find director by company name using the dedicated director lookup.
director_profile = rusprofile.companies.find_director(query="Яндекс")
print(director_profile.name, director_profile.director.name, director_profile.director.role)
# Extract links from a specific Rusprofile page.
for link in rusprofile.links.extract(path="/id/140318", limit=5):
print(link.text, link.href)
# Typed error handling: catch CompanyNotFound for an invalid ID.
try:
bad = rusprofile.companysummary(id="9999999999").details()
print(bad.name)
except CompanyNotFound as exc:
print(f"Company not found: {exc.company_id}")
print("exercised: search / details / find_director / links.extract / CompanyNotFound")
Search for companies by name, INN, or OGRN via the advanced search API. Returns a paginated list of matches with basic info including name, INN, OGRN, address, CEO name, and internal ID. Results are sorted by revenue by default. Up to 50 results per request.
| Param | Type | Description |
|---|---|---|
| queryrequired | string | Search query — company name, INN, or OGRN. |
{
"type": "object",
"fields": {
"items": "array of company summaries with id, name, inn, ogrn, address, ceo_name, link",
"total": "integer total number of matching companies"
},
"sample": {
"data": {
"items": [
{
"id": "140318",
"inn": "7736050003",
"link": "/id/140318",
"name": "ПАО \"Газпром\"",
"ogrn": "1027700070518",
"address": "197229, город Санкт-Петербург, Лахтинский пр-кт, д. 2 к. 3 стр. 1",
"ceo_name": "Миллер Алексей Борисович"
}
],
"total": 2533
},
"status": "success"
}
}About the Rusprofile API
Company Search and Profile Retrieval
The search_companies endpoint accepts a query parameter — a company name, INN, or OGRN — and returns a list of matches. Each item includes id, name, inn, ogrn, address, ceo_name, and a link to the Rusprofile page. The total field gives the full count of matches. When the query resolves to exactly one company, the endpoint returns a single-item array rather than a paginated list.
Director Information
get_company_profile takes a Rusprofile company_id (obtained from search results) and returns a director object containing name, inn, role, and link. The same director object is returned by get_director_details, which accepts either a company_id or a free-text query — useful when you have a company name but no internal ID. Both endpoints return the top-level company fields id, inn, name, and ogrn alongside the director data.
Link Extraction
The extract_links endpoint retrieves all hyperlinks from any Rusprofile page given a path such as /id/<company_id>. An optional section_selector CSS selector narrows extraction to a specific part of the page. Each result in the links array includes a text label and an href value. This is useful for discovering related entities, subsidiaries, or affiliated profiles linked from a company page.
Coverage Notes
All data reflects what is publicly listed on rusprofile.ru for Russian legal entities. The API surfaces INN and OGRN identifiers, registration addresses, and director personal INN numbers. Financial statements, court records, and ownership history visible on some Rusprofile pages are not currently exposed by the structured endpoints.
The Rusprofile API is a managed, monitored endpoint for rusprofile.ru — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when rusprofile.ru changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official rusprofile.ru API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Verify a Russian supplier's INN and OGRN before entering a contract.
- Bulk-look up director personal INN numbers for due diligence workflows.
- Cross-reference CEO names returned by
search_companiesagainst other databases. - Discover affiliated entities by extracting links from a company's Rusprofile page.
- Automate company identity checks using OGRN as a unique identifier.
- Feed registration addresses into geocoding pipelines for geographic analysis of Russian businesses.
- Build a watch-list that monitors director role changes across multiple companies.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does rusprofile.ru offer an official developer API?+
What does `get_director_details` return that `search_companies` does not?+
search_companies returns only a ceo_name string in each summary item. get_director_details returns a structured director object with the director's full name, personal INN, role title, and a direct link to their Rusprofile page — which is necessary for identity verification or further lookups.Does the API return financial statements or court records for Russian companies?+
Can I retrieve a list of all companies associated with a specific director INN?+
How does pagination work in `search_companies`?+
total integer indicating the full match count and an items array for the current page. If the search resolves to exactly one company (because the query matches an INN or OGRN uniquely), the site returns that single profile directly and the result is a one-item array regardless of total.