Banking-grade encryption99.9% uptime
Business Data10 min read

Commercial Registration Lookup API: Instant CR Verification for Bahrain Businesses

Automate Bahrain commercial registration verification with Edge's CR Lookup API. Get company name, status, owners, capital, and activities instantly by CR number. Built for KYB, compliance, and fintech onboarding.

Edge Team

Edge Team

Every business operating in Bahrain is assigned a Commercial Registration (CR) number by the Ministry of Industry and Commerce (MOICT). This number is the backbone of business identity in the Kingdom — it appears on invoices, contracts, bank account applications, and regulatory filings. Yet for decades, verifying a CR has meant manual lookups on the Sijilat portal, copying data into spreadsheets, and hoping nothing changed between the time you checked and the time you made a decision.

That manual process does not scale. If your platform onboards ten businesses a month, manual CR checks are tedious. If you onboard ten businesses a day, they become a bottleneck. And if you operate in a regulated industry — banking, insurance, payments — they become a compliance liability.

Edge's Commercial Registration Lookup API eliminates that bottleneck entirely. Pass a CR number, get back structured, verified company data in milliseconds.

What Is a Commercial Registration (CR) Number?

A Commercial Registration number is a unique identifier issued by Bahrain's MOICT when a business is formally registered. It serves a similar function to a Company Registration Number in the UK, an EIN in the United States, or a CR/trade license number in other GCC countries like Saudi Arabia and the UAE.

The CR number is required for virtually every formal business interaction in Bahrain:

  • Opening a corporate bank account
  • Signing government contracts
  • Registering with the Labour Market Regulatory Authority (LMRA)
  • Filing taxes with the National Bureau for Revenue (NBR)
  • Applying for import/export licenses
  • Participating in government tenders

Because the CR number is so central to business operations, verifying it — and the data behind it — is a fundamental step in any Know Your Business (KYB) process.

Why Automated CR Lookup Matters

The Manual Process Is Broken

The traditional way to verify a Bahrain CR involves visiting the Sijilat portal, entering the CR number, and manually reviewing the returned information. This works for one-off checks, but it introduces several problems at scale:

  • No structured data: The portal returns HTML pages, not machine-readable data. You cannot feed the results directly into your onboarding system, risk engine, or CRM.
  • No change detection: If a company's status changes from active to suspended, you will not know unless you manually re-check.
  • Human error: Manual data entry from a web page into internal systems introduces transcription mistakes — wrong digits in the CR number, misspelled company names, outdated status information.
  • Speed: Each manual lookup takes 2-5 minutes. Multiply that by hundreds of onboarding applications per month and you have a full-time job that adds no strategic value.

Compliance Demands Real-Time Data

Financial institutions and regulated entities in Bahrain must verify the businesses they deal with. The Central Bank of Bahrain (CBB) mandates KYB checks for account opening, and the general trend across GCC regulators is toward stricter corporate due diligence.

An API-driven approach means your compliance team gets verified data at the moment of decision — not data from a manual check performed three days ago.

Developer Experience Matters

Your engineering team should not be scraping government websites. Web scraping is fragile, legally questionable, and breaks whenever the portal updates its HTML structure. An API gives you a stable contract: send a CR number, receive structured JSON. That is a dependency you can build on.

What the CR Lookup API Returns

When you query Edge's CR Lookup API with a valid Bahrain CR number, you receive a comprehensive data object covering the full registration profile:

Field Description
cr_number The Commercial Registration number
company_name Registered company name (Arabic and English)
status Current registration status (Active, Expired, Suspended, Cancelled)
registration_date Date the CR was originally issued
expiry_date CR expiration date
legal_form Legal entity type (WLL, BSC, sole proprietorship, etc.)
capital Registered capital amount and currency
activities List of registered commercial activities with ISIC codes
owners List of owners/partners with names and nationality
address Registered business address

This is the same data you would find on the official registration certificate, returned as clean JSON that your systems can parse and store immediately.

Integration Guide

Authentication

All Edge API requests require an API key passed in the X-Api-Key header. You can generate API keys from the Edge Dashboard.

Basic Lookup with curl

curl -X GET "https://api.edge.bh/v1/cr/lookup?cr_number=12345-1" \
  -H "X-Api-Key: your_api_key_here" \
  -H "Accept: application/json"

Response Example

{
  "success": true,
  "data": {
    "cr_number": "12345-1",
    "company_name_en": "Bahrain Digital Solutions WLL",
    "company_name_ar": "حلول البحرين الرقمية ش.ذ.م.م",
    "status": "Active",
    "legal_form": "WLL",
    "registration_date": "2019-04-15",
    "expiry_date": "2027-04-14",
    "capital": {
      "amount": 50000,
      "currency": "BHD"
    },
    "activities": [
      {
        "code": "6201",
        "description_en": "Computer programming activities",
        "description_ar": "أنشطة برمجة الحاسوب"
      },
      {
        "code": "6202",
        "description_en": "Computer consultancy activities",
        "description_ar": "أنشطة الاستشارات الحاسوبية"
      }
    ],
    "owners": [
      {
        "name_en": "Ahmed Ali",
        "name_ar": "أحمد علي",
        "nationality": "BH",
        "ownership_percentage": 60
      },
      {
        "name_en": "Sara Mohammed",
        "name_ar": "سارة محمد",
        "nationality": "BH",
        "ownership_percentage": 40
      }
    ],
    "address": {
      "block": "428",
      "road": "2806",
      "building": "1523",
      "area": "Seef",
      "governorate": "Capital"
    }
  },
  "credits_used": 1,
  "credits_remaining": 4999
}

JavaScript Integration

const response = await fetch(
  "https://api.edge.bh/v1/cr/lookup?cr_number=12345-1",
  {
    headers: {
      "X-Api-Key": process.env.EDGE_API_KEY,
      "Accept": "application/json",
    },
  }
);

const result = await response.json();

if (result.success) {
  const company = result.data;

  // Check if the company is active
  if (company.status !== "Active") {
    console.warn(`CR ${company.cr_number} is ${company.status}`);
    // Flag for manual review
  }

  // Check if the CR is expired or expiring soon
  const expiryDate = new Date(company.expiry_date);
  const daysUntilExpiry = Math.ceil(
    (expiryDate - new Date()) / (1000 * 60 * 60 * 24)
  );

  if (daysUntilExpiry < 30) {
    console.warn(`CR expires in ${daysUntilExpiry} days`);
  }

  // Store verified company data in your system
  await saveVerifiedCompany({
    crNumber: company.cr_number,
    name: company.company_name_en,
    status: company.status,
    legalForm: company.legal_form,
    verifiedAt: new Date().toISOString(),
  });
}

Python Integration

import requests
from datetime import datetime, timedelta

response = requests.get(
    "https://api.edge.bh/v1/cr/lookup",
    params={"cr_number": "12345-1"},
    headers={
        "X-Api-Key": "your_api_key_here",
        "Accept": "application/json",
    },
)

data = response.json()

if data["success"]:
    company = data["data"]
    expiry = datetime.strptime(company["expiry_date"], "%Y-%m-%d")

    if company["status"] != "Active":
        print(f"WARNING: CR {company['cr_number']} status is {company['status']}")

    if expiry < datetime.now() + timedelta(days=30):
        print(f"WARNING: CR expires on {company['expiry_date']}")

Real-World Use Cases

Fintech Onboarding

Payment processors, lending platforms, and neobanks operating in Bahrain need to verify every merchant or borrower before activating their account. With the CR Lookup API, you can build an onboarding flow where:

  1. The applicant enters their CR number.
  2. Your backend calls the API and auto-fills company details.
  3. The applicant confirms the pre-filled data.
  4. Your system validates that the CR is active and not expired.
  5. Ownership data feeds into your Ultimate Beneficial Owner (UBO) checks.

This reduces onboarding time from days to minutes and eliminates data entry errors that cause downstream problems.

Banking KYB

Banks in Bahrain must comply with CBB regulations on corporate account opening. The CR Lookup API provides the raw data needed for initial verification. Combined with Edge's Sanctions Screening API, you can build an automated KYB pipeline that checks both the company and its owners against sanctions lists in a single workflow.

Insurance Underwriting

Insurance companies writing commercial policies need to verify that the insured entity actually exists, is currently active, and is engaged in the activities they claim. The CR Lookup API returns registered activities with ISIC codes, allowing underwriters to validate that the stated business activities match the registration — a critical step in fraud prevention.

Supply Chain and Procurement

Large enterprises and government entities procuring goods or services from local vendors can use the API to verify vendor registrations before issuing purchase orders. This is especially relevant for government tenders, where CR validity is a prerequisite for participation.

Market Intelligence

Investment firms and consultancies researching the Bahrain market can programmatically pull company data for analysis. When combined with the Commercial Registration Search API, you can build a comprehensive view of business activity in specific sectors.

Eliminating Manual MOICT Lookups

The Sijilat portal serves its purpose for individual, occasional lookups. But when your business process requires verifying dozens or hundreds of CRs — during a quarterly vendor review, a batch onboarding campaign, or a regulatory audit — manual lookups become untenable.

With the API, you can:

  • Batch-verify: Loop through a list of CR numbers and verify all of them programmatically.
  • Schedule re-checks: Set up a cron job that re-verifies your active vendor or customer CRs weekly, flagging any that have expired or changed status.
  • Build dashboards: Feed CR data into your internal tools so compliance officers see real-time verification status without leaving their workflow.
  • Audit trail: Every API call returns structured data that you can log, creating an auditable record of when each CR was verified and what data was returned.

Compliance Benefits

Regulatory Alignment

Bahrain's regulatory environment — governed by the CBB for financial institutions and the MOICT for commercial entities — increasingly expects digital verification processes. Manual processes are not just slow; they introduce risk. An API-driven approach demonstrates to auditors and regulators that your verification process is systematic, consistent, and auditable.

Reduced False Positives

When humans manually transcribe data, mistakes happen. A single wrong digit in a CR number can lead to verifying the wrong company entirely — a compliance failure that could have serious consequences. API-driven verification eliminates transcription errors because the data flows directly from the source into your system.

Continuous Monitoring

KYB is not a one-time event. Regulations require ongoing monitoring of business relationships. The CR Lookup API makes it practical to re-verify companies on a schedule, catching status changes (suspension, expiration, cancellation) that might otherwise go unnoticed until a problem arises.

Credit-Based Pricing

Edge uses a simple credit-based pricing model. Each CR Lookup API call consumes credits from your organization's balance. There are no monthly minimums, no per-seat charges, and no long-term contracts. You pay for what you use.

Check the Edge Dashboard for current credit pricing and to monitor your usage in real time.

Getting Started

  1. Create an account at app.edge.bh — it takes less than a minute.
  2. Generate an API key from the dashboard. Your key is shown once; store it securely.
  3. Make your first call using the curl example above.
  4. Integrate into your onboarding, compliance, or data pipeline.

If you are building KYB workflows, consider combining the CR Lookup API with the Commercial Registration Search API (for discovering companies by name) and the Sanctions Screening API (for checking owners against global watchlists). Together, these services provide end-to-end business verification for the Bahrain market.

Frequently Asked Questions

What is a Commercial Registration (CR) number in Bahrain?

A Commercial Registration number is a unique identifier assigned by Bahrain's Ministry of Industry and Commerce (MOICT) to every registered business. It typically follows a format like "12345-1" and is required for all official business activities including opening bank accounts, signing contracts, and participating in government tenders. Think of it as the official identity number for a business entity in Bahrain.

What data does the CR Lookup API return?

The API returns a comprehensive company profile including: registered company name (in Arabic and English), current status (Active, Expired, Suspended, or Cancelled), legal form (WLL, BSC, sole proprietorship, etc.), registration and expiry dates, registered capital, commercial activities with ISIC codes, owner/partner names with nationality and ownership percentages, and the registered business address. All data is returned as structured JSON.

How is the CR Lookup API different from the CR Search API?

The CR Lookup API retrieves detailed data for a specific company when you already know the CR number — it is a direct, precise query. The Commercial Registration Search API allows you to find companies by name, activity, status, or other filters when you do not have the CR number. In a typical KYB workflow, you might use Search to find a company, then Lookup to get its full details.

Can I use this API for Know Your Business (KYB) compliance?

Yes. The CR Lookup API is designed specifically for KYB and compliance workflows. It returns the verified company data that regulated entities need for customer due diligence: legal entity type, active/inactive status, ownership structure, registered activities, and registration validity dates. For a complete KYB solution, combine it with Edge's Sanctions Screening API to check company owners against global watchlists.

How many API calls can I make?

There are no hard rate limits for normal usage. Each API call consumes credits from your organization's balance, and you can purchase credits as needed through the Edge Dashboard. The API is designed for both individual lookups and batch processing, so you can verify hundreds of CRs programmatically.

Is the data from the CR Lookup API official?

The data returned by the API reflects the commercial registration information maintained by Bahrain's MOICT. It provides the same information you would obtain from the official Sijilat portal, structured as machine-readable JSON for integration into your systems. For legal proceedings or formal regulatory submissions, always confirm requirements with your legal counsel regarding acceptable data sources.

Start building with Edge

Get 500 free API credits instantly. No credit card required. Full access to IBAN validation, sanctions screening, exchange rates, and all 12 services.

Trusted by fintechs and banks across the GCC.