CRO APIcore.cro.ie ↗
Search the Irish Companies Registration Office by name or number. Retrieve company status, registered address, incorporation date, and current officers via 2 endpoints.
What is the CRO API?
The core.cro.ie API gives developers programmatic access to the Irish Companies Registration Office public register through 2 endpoints. search_companies lets you query by registered name or company number and returns matching entities with their CRO numbers and status. get_company_officers returns a company's full officer list — directors and secretaries — alongside incorporation date, registered address, and current status.
curl -X GET 'https://api.parse.bot/scraper/19c75f2a-a34e-4289-89ff-2f2f6571187c/search_companies?name=Ryanair&search_type=contains_word' \ -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 core-cro-ie-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: Irish CRO company search and officer lookup."""
from parse_apis.core_cro_ie_api import CroIe, SearchType, CompanyNotFound
client = CroIe()
# Search for companies whose name contains "Ryanair".
for summary in client.company_summaries.search(name="Ryanair", search_type=SearchType.CONTAINS_WORD, limit=5):
print(summary.company_name, summary.status, summary.company_number)
# Drill into the first match to get full company details and officers.
first = client.company_summaries.search(name="Ryanair", limit=1).first()
if first is not None:
company = first.details()
print(company.company_name, company.registered_address)
for officer in company.officers:
print(f" {officer.full_name} — {officer.role} since {officer.appointment_date}")
# Point lookup by company number.
try:
detail = client.companies.get(company_number="104547")
print(detail.company_name, detail.status, detail.officer_count, "officers")
except CompanyNotFound:
print("Company not found")
print("exercised: company_summaries.search / details / companies.get")
Searches the Irish CRO register (companies and business names) by registered name and/or registered number and returns the matching entities in one round trip. At least one of name or company_number must be supplied; when both are given the site applies both. Each result carries entity_id (the key accepted by get_company_officers), the registered company_number, name, status (e.g. Normal, Dissolved, Ceased), company type, which register it sits on (Companies or Business Names) and the registration date. The same registered number can appear once per register, so a number search may return more than one row. Results are not paginated by the site; a search with no matches returns an empty companies array.
| Param | Type | Description |
|---|---|---|
| name | string | Registered name text to match, interpreted according to search_type. Required when company_number is omitted. |
| search_type | string | How the name is matched: any word contained, name starts with, or exact registered name. |
| company_number | string | Registered company/business number, digits only (e.g. 104547). Required when name is omitted. |
{
"type": "object",
"fields": {
"count": "integer number of companies returned",
"companies": "array of matching entities; each has entity_id (integer key for get_company_officers), company_number, company_name, status, company_type, register, registered_date (YYYY-MM-DD)"
},
"sample": {
"data": {
"count": 2,
"companies": [
{
"status": "Normal",
"register": "Companies",
"entity_id": 139795,
"company_name": "RYANAIR DESIGNATED ACTIVITY COMPANY",
"company_type": "DAC - Designated Activity Company (limited by shares)",
"company_number": "104547",
"registered_date": "1984-11-28"
},
{
"status": "Dissolved",
"register": "Companies",
"entity_id": 152986,
"company_name": "RYANAIR CARGO LIMITED",
"company_type": "Private limited by shares",
"company_number": "117738",
"registered_date": "1986-10-28"
}
]
},
"status": "success"
}
}About the CRO API
Searching the Irish CRO Register
search_companies accepts at least one of name or company_number. The name parameter supports three matching modes via search_type: match any contained word, match names starting with the supplied string, or require an exact registered name. Responses include a count field and a companies array where each entry carries entity_id, company_number, company_name, and status. The entity_id is the key you pass to the second endpoint.
Company Details and Officers
get_company_officers accepts either entity_id (from search results) or company_number directly. It returns a single company record with company_name, company_number, company_type (the legal form), registered_address, registered_date (YYYY-MM-DD of incorporation), status, and status_effective_date. The officers array lists every current officer with full_name, role (Director or Secretary as the register labels it), and appointment_date in YYYY-MM-DD format. The resignation_date field is always null for current officers — resigned officers are not included.
Coverage and Data Shape
The register covers Irish limited companies, designated activity companies, public limited companies, and business names registered with the CRO. All data reflects what appears on the public CRO register. Fields like registered_address and status_effective_date may be null when the register holds no value for a given company.
The CRO API is a managed, monitored endpoint for core.cro.ie — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when core.cro.ie 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 core.cro.ie 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 that an Irish company is actively registered before entering a commercial agreement, using the
statusfield fromget_company_officers. - Build a director-search tool that maps a person's name across multiple companies by looping
search_companiesresults and callingget_company_officersfor each. - Populate a CRM with Irish counterparty data — registered address, company type, and incorporation date — sourced from the CRO register.
- Audit board composition changes by tracking appointment dates from the
officersarray over time. - Screen for dissolved Irish companies in a supplier list by checking the
statusfield returned byget_company_officers. - Resolve a company number from a partial name using the
any word containedsearch_type option, then retrieve full company details. - Identify the company secretary for a registered Irish entity to direct formal correspondence.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 200 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
| Team | $300/mo | 20,000 | 300 req/min |
| Company | $1,000/mo | 100,000 | 500 req/min |
Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does the CRO provide an official developer API?+
What does `get_company_officers` return for officers, and does it include resigned officers?+
get_company_officers returns only current officers — those whose resignation_date is null. Each officer record includes full_name, role (Director or Secretary), and appointment_date. Historical officers who have resigned are not present in the response.Does the API return filing history, financial statements, or annual return documents?+
Can I search for business names registered with the CRO, not just limited companies?+
search_companies searches across both registered companies and business names on the CRO register. Each result includes a company_number and entity_id regardless of entity type, so you can pass either to get_company_officers for details.Is there a way to retrieve all companies associated with a named individual as director?+
search_companies and then inspect the officers array from get_company_officers, but there is no endpoint that accepts a person's name and returns all their directorships. You can fork this API on Parse and revise it to add that lookup if the underlying register exposes it.