Bahrain Company Registry Scraper
Bahrain Company Registry Scraper — sijilat.bh
Scrape commercial registrations from the 180,000+ entities in sijilat.bh — the official Bahrain Ministry of Industry and Commerce (MOIC) eGovernment portal. Search by company name (English or Arabic), CR number, or registration status. Returns full company profiles including address, capital structure, shareholders, registered business activities, and contact details.
What does the Bahrain Company Registry Scraper do?
At least one of searchNameEn, searchNameAr, or crNumber must be provided. The actor returns no results without a search term — this matches how the sijilat.bh portal operates. Once a search is issued, the actor paginates across all result pages and optionally fetches full detail profiles (address, capital, shareholders) per company record.
Authentication uses a public HMAC token embedded in the site's JavaScript — no account or API key is needed.
What data does it extract?
| Field | Description |
|---|---|
cr_number |
Commercial Registration number |
branch_number |
Branch number (1 = head office) |
legal_name_en |
Company name in English |
legal_name_ar |
Company name in Arabic |
company_type |
Legal entity type (e.g. With Limited Liability Company, Partnership Company) |
nationality |
Company nationality: BAHRAINI, GCC, or FOREIGN |
status |
Registration status: ACTIVE, EXPIRED, CANCELLED, SOLD OR LEGAL STATUS CHANGED |
registration_date |
Date of commercial registration (DD/MM/YYYY) |
expiry_date |
Registration expiry date (DD/MM/YYYY) |
business_activities |
Registered activities, pipe-separated |
address_building |
Building number |
address_road |
Road number |
address_road_name |
Road name |
address_block |
Block number |
address_town |
Town/area name |
po_box |
P.O. Box |
phone |
Primary phone number |
fax |
Fax number |
email |
Contact email address |
website |
Corporate website URL |
authorized_capital |
Authorized capital amount |
issued_capital |
Issued capital amount |
currency |
Capital currency code |
shareholders |
Array of shareholder entries formatted as Name (Nationality) — shares: N |
shareholders_count |
Number of shareholders or partners |
source_url |
Direct link to the company detail page on sijilat.bh |
Address, capital, and shareholder fields are populated only when fetchDetails: true (the default).
How to use it
{
"searchNameEn": "trading",
"companyStatus": "ACTIVE",
"fetchDetails": true,
"maxItems": 100
}
{
"crNumber": "12345",
"fetchDetails": true,
"maxItems": 1
}
| Field | Type | Default | Description |
|---|---|---|---|
searchNameEn |
string | — | English company name search (min 2 chars, partial match supported) |
searchNameAr |
string | — | Arabic company name search (min 2 chars, partial match supported) |
crNumber |
string | — | Exact Commercial Registration number lookup |
companyStatus |
string | ACTIVE | Filter: ACTIVE, EXPIRED, CANCELLED, SOLD OR LEGAL STATUS CHANGED, or blank for any |
fetchDetails |
boolean | true |
Fetch full detail profile per company (address, capital, shareholders) |
maxItems |
integer | 10 |
Maximum records to return (up to 50,000) |
At least one of searchNameEn, searchNameAr, or crNumber is required. Providing none will result in zero records returned.
Use cases
- B2B lead generation — find active trading or construction companies in Bahrain by name and export contacts (phone, email, website) in bulk
- Corporate due diligence — retrieve shareholder lists, registered addresses, and capital structure for any Bahraini entity by CR number
- Market research — map the landscape of FOREIGN or GCC-nationality companies registered in Bahrain across specific business activity categories
- Compliance screening — identify expired or cancelled registrations to flag in counterparty risk workflows
- Legal and M&A research — pull branch records (each CR can have multiple branch numbers) to understand corporate structure
FAQ
Why do I get zero results?
The actor requires at least one of searchNameEn, searchNameAr, or crNumber. If all three are left blank, the portal returns no results and the actor has nothing to scrape.
What does branch_number mean?
Each CR number can have multiple branch records. Branch number 1 is typically the head office. Branches in different locations share the same CR number but have distinct branch numbers.
Does the actor need an API key?
No. Sijilat.bh uses a public HMAC token for its data API — the actor extracts and refreshes this token automatically. No account, API key, or proxy is required.
Results export as JSON, CSV, or Excel from the Apify dataset view.