Discover/Baidu API
live

Baidu APIaiqicha.baidu.com

Access Chinese company search, shareholder data, executive profiles, and risk info from Aiqicha via 6 structured API endpoints.

Endpoints
6
Updated
2mo ago

What is the Baidu API?

This API exposes 6 endpoints covering Chinese business intelligence from Aiqicha (爱企查), Baidu's company registry platform. Use search_companies to find firms by name or registration number, get_company_detail to pull full company profiles, and dedicated endpoints for shareholders, executives, and individual business people. All responses return a status, a msg, and a structured data object containing the requested records.

Try it
Search keyword (company name, ID, etc.)
api.parse.bot/scraper/5039cc3b-8e42-4e7c-949b-953a384356c4/<endpoint>
Ready to send
Fill in the parameters and hit sign in to send to see live response data here.
Call it over HTTPgrab a free API key at signup
curl -X GET 'https://api.parse.bot/scraper/5039cc3b-8e42-4e7c-949b-953a384356c4/search_companies' \
  -H 'X-API-Key: $PARSE_API_KEY'
Python SDK · recommended

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 aiqicha-baidu-com-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.

"""
Aiqicha Business Intelligence API Client
Comprehensive API for Chinese business intelligence from Aiqicha (Baidu).
Includes company search, details, shareholders, executives, and person lookup.

Get your API key from: https://parse.bot/settings
Note: This API has strict mainland-China-only geo-blocking.
"""

import os
import requests
from typing import Any, Dict, List, Optional


class ParseClient:
    """Client for interacting with the Aiqicha Business Intelligence API."""

    def __init__(self, api_key: Optional[str] = None):
        """
        Initialize the Parse API client.

        Args:
            api_key: API key for authentication. If not provided, reads from PARSE_API_KEY env var.
        """
        self.base_url = "https://api.parse.bot"
        self.scraper_id = "9bb50d87-941e-4c12-b162-4f109781ce67"
        self.api_key = api_key or os.getenv("PARSE_API_KEY")

        if not self.api_key:
            raise ValueError("API key must be provided or set in PARSE_API_KEY environment variable")

    def _call(self, endpoint: str, method: str = "POST", **params) -> Dict[str, Any]:
        """
        Make a request to the Parse API.

        Args:
            endpoint: API endpoint name
            method: HTTP method (GET or POST)
            **params: Query/body parameters

        Returns:
            Response data as dictionary

        Raises:
            requests.RequestException: If the API request fails
        """
        url = f"{self.base_url}/scraper/{self.scraper_id}/{endpoint}"
        headers = {
            "X-API-Key": self.api_key,
            "Content-Type": "application/json"
        }

        try:
            if method == "GET":
                response = requests.get(url, headers=headers, params=params, timeout=30)
            elif method == "POST":
                response = requests.post(url, headers=headers, json=params, timeout=30)
            else:
                raise ValueError(f"Unsupported HTTP method: {method}")

            response.raise_for_status()
            return response.json()
        except requests.RequestException as e:
            raise requests.RequestException(f"API request failed: {str(e)}")

    def search_companies(self, query: str) -> Dict[str, Any]:
        """
        Search for companies by name, keyword, or registration number.

        Args:
            query: Search keyword (company name, ID, etc.)

        Returns:
            Response containing list of matching companies with entName and pid
        """
        return self._call("search_companies", method="GET", query=query)

    def get_company_detail(self, pid: str) -> Dict[str, Any]:
        """
        Retrieve detailed information about a specific company by its PID.

        Args:
            pid: Company PID (from search results)

        Returns:
            Response containing company details including basicInfo
        """
        return self._call("get_company_detail", method="GET", pid=pid)

    def get_company_shareholders(self, pid: str) -> Dict[str, Any]:
        """
        Get the shareholder list for a given company.

        Args:
            pid: Company PID

        Returns:
            Response containing list of shareholders with shareholderName and shareholdRatio
        """
        return self._call("get_company_shareholders", method="GET", pid=pid)

    def get_company_executives(self, pid: str) -> Dict[str, Any]:
        """
        Get the list of key executives and management personnel for a company.

        Args:
            pid: Company PID

        Returns:
            Response containing list of executives with name and title
        """
        return self._call("get_company_executives", method="GET", pid=pid)

    def search_people(self, name: str) -> Dict[str, Any]:
        """
        Search for business people/executives by name.

        Args:
            name: Person name

        Returns:
            Response containing list of matching people with name and pid
        """
        return self._call("search_people", method="GET", name=name)

    def get_person_detail(self, pid: str) -> Dict[str, Any]:
        """
        Get detailed profile of a business person.

        Args:
            pid: Person PID (from search results)

        Returns:
            Response containing person details with role and name
        """
        return self._call("get_person_detail", method="GET", pid=pid)


def print_section(title: str) -> None:
    """Print a formatted section header."""
    print(f"\n{'='*70}")
    print(f"  {title}")
    print(f"{'='*70}\n")


if __name__ == "__main__":
    # Initialize client
    client = ParseClient()

    # ============================================================================
    # Workflow: Research a company and its key stakeholders
    # ============================================================================

    print_section("STEP 1: Search for Companies")
    print("Searching for 'Baidu' companies...")

    search_result = client.search_companies(query="Baidu")

    if search_result.get("status") == 0 and search_result.get("data", {}).get("list"):
        companies = search_result["data"]["list"]
        print(f"Found {len(companies)} companies:\n")

        for idx, company in enumerate(companies[:3], 1):  # Process top 3 results
            company_name = company.get("entName", "N/A")
            company_pid = company.get("pid", "N/A")
            print(f"  {idx}. {company_name}")
            print(f"     PID: {company_pid}\n")

            # ====================================================================
            # STEP 2: Get detailed information for each company
            # ====================================================================
            print_section(f"STEP 2: Company Details - {company_name}")

            detail_result = client.get_company_detail(pid=company_pid)

            if detail_result.get("status") == 0:
                company_data = detail_result.get("data", {})
                basic_info = company_data.get("basicInfo", {})

                legal_person = basic_info.get("legalPerson", "N/A")
                ent_name = basic_info.get("entName", "N/A")

                print(f"Company Name: {ent_name}")
                print(f"Legal Representative: {legal_person}")
            else:
                print(f"Failed to fetch details: {detail_result.get('msg', 'Unknown error')}")

            # ====================================================================
            # STEP 3: Get shareholders information
            # ====================================================================
            print_section(f"STEP 3: Shareholders - {company_name}")

            shareholders_result = client.get_company_shareholders(pid=company_pid)

            if shareholders_result.get("status") == 0:
                shareholders = shareholders_result.get("data", {}).get("list", [])
                if shareholders:
                    print(f"Total Shareholders: {len(shareholders)}\n")
                    for shareholder in shareholders[:5]:  # Show top 5
                        shareholder_name = shareholder.get("shareholderName", "N/A")
                        shareholding_ratio = shareholder.get("shareholdRatio", "N/A")
                        print(f"  • {shareholder_name}: {shareholding_ratio}")
                else:
                    print("No shareholder information available")
            else:
                print(f"Failed to fetch shareholders: {shareholders_result.get('msg', 'Unknown error')}")

            # ====================================================================
            # STEP 4: Get executives information
            # ====================================================================
            print_section(f"STEP 4: Key Executives - {company_name}")

            executives_result = client.get_company_executives(pid=company_pid)

            if executives_result.get("status") == 0:
                executives = executives_result.get("data", {}).get("list", [])
                if executives:
                    print(f"Total Executives: {len(executives)}\n")
                    for executive in executives[:5]:  # Show top 5
                        exec_name = executive.get("name", "N/A")
                        exec_title = executive.get("title", "N/A")
                        print(f"  • {exec_name}")
                        print(f"    Title: {exec_title}\n")
                else:
                    print("No executive information available")
            else:
                print(f"Failed to fetch executives: {executives_result.get('msg', 'Unknown error')}")

    else:
        print("No companies found or API error")

    # ============================================================================
    # Bonus: Search for a specific person
    # ============================================================================
    print_section("BONUS: Search for a Business Person")
    print("Searching for 'Robin Li'...\n")

    person_search_result = client.search_people(name="Robin Li")

    if person_search_result.get("status") == 0 and person_search_result.get("data", {}).get("list"):
        people = person_search_result["data"]["list"]
        print(f"Found {len(people)} people named 'Robin Li':\n")

        for person in people[:2]:  # Show top 2 results
            person_name = person.get("name", "N/A")
            person_pid = person.get("pid", "N/A")

            print(f"Name: {person_name}")
            print(f"PID: {person_pid}")

            # Get details for this person
            person_detail_result = client.get_person_detail(pid=person_pid)

            if person_detail_result.get("status") == 0:
                person_data = person_detail_result.get("data", {})
                person_role = person_data.get("role", "N/A")
                print(f"Role: {person_role}")
            else:
                print(f"Failed to fetch person details: {person_detail_result.get('msg', 'Unknown error')}")

            print()
    else:
        print("No people found with that name")

    print_section("Workflow Complete")
    print("Successfully demonstrated company and person research workflow!")
All endpoints · 6 totalmissing one? ·

Search for companies by name, keyword, or registration number.

Input
ParamTypeDescription
queryrequiredstringSearch keyword (company name, ID, etc.)
Response
{
  "type": "object",
  "fields": {
    "msg": "string",
    "data": "object",
    "status": "integer"
  },
  "sample": {
    "msg": "ok",
    "data": {
      "list": [
        {
          "pid": "28434778170138",
          "entName": "Baidu Online Network Technology (Beijing) Co., Ltd."
        }
      ]
    },
    "status": 0
  }
}

About the Baidu API

Company Search and Detail

The search_companies endpoint accepts a query string — a company name, keyword, or registration number — and returns a list of matching entities from Aiqicha's database. Each match includes enough identifying data to obtain a company pid, which is the primary key used by all other company-scoped endpoints. Pass that pid to get_company_detail to retrieve the full company record, including registration details, business scope, legal status, registered capital, and address information.

Ownership and Management Data

get_company_shareholders and get_company_executives both accept a pid and return structured lists from the data field. Shareholders typically include investor names, shareholding percentages, and investment amounts. Executives cover key management roles such as legal representative, directors, and supervisors. These two endpoints allow you to map corporate ownership structures and leadership hierarchies for any company in the Aiqicha index.

People Lookup

search_people accepts a name parameter and returns business individuals who appear in Aiqicha's records — typically executives, legal representatives, or investors. The returned PIDs can then be passed to get_person_detail to retrieve a full profile, including the companies a person is associated with, their roles, and other professional background data surfaced by Aiqicha.

Coverage and Geo Restrictions

Aiqicha covers mainland Chinese registered companies and draws on public records from Chinese regulatory bodies. The source platform enforces strict mainland-China-only geo-blocking, so the API is primarily relevant for data on PRC-registered entities. Queries for Hong Kong, Macau, or Taiwan-registered companies may return limited or no results.

Reliability & maintenance

The Baidu API is a managed, monitored endpoint for aiqicha.baidu.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when aiqicha.baidu.com 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 aiqicha.baidu.com 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?+
It's built not to. Every endpoint is health-checked on a schedule with automated test probes. When the source site changes and a check fails, the API is automatically queued for repair and re-verified — that's the self-healing layer. Each API page shows when its endpoints were last verified. And because marketplace APIs are shared, any fix reaches everyone using it.
Is this an official API from the source site?+
No — Parse APIs are independent, managed REST wrappers over publicly available data. That is the point: where a site has no official API (or only a limited one), Parse gives you a maintained, monitored endpoint for that data and keeps it working as the site changes — so you get a stable contract over a source that never promised one.
Can I fix or extend this API myself if I need a new endpoint or field?+
Yes — and you don't have to wait on us. This API was generated by the Parse agent, which stays attached. Describe the change in plain English ("add an endpoint that returns reviews", "fix the price field") in the revise box on the API page or via the revise_api MCP tool, and the agent rebuilds it against the live site in minutes. Contributing the change back to the public API is free.
What happens if I call an endpoint that has an issue?+
Errors are machine-readable: a bad call returns a clean status with the list of available endpoints and a repair hint, so an agent (or you) can recover or trigger a fix instead of failing silently. Confirmed failures feed the automatic repair queue.
Common use cases
  • Verify the registration status and legal representative of a Chinese supplier before onboarding
  • Map the shareholder structure of a target Chinese company using get_company_shareholders
  • Identify all companies a specific executive is associated with via search_people and get_person_detail
  • Screen for corporate risk flags on Chinese counterparties using get_company_detail
  • Enrich a CRM with Chinese company registration numbers and business scope data
  • Research executive backgrounds and board compositions for due diligence workflows
  • Build a monitoring feed for changes in key personnel across a portfolio of Chinese entities
Pricing & limitsSee full pricing →
TierPriceCredits/monthRate limit
Free$0/mo1005 req/min
Hobby$30/mo1,00020 req/min
Developer$100/mo5,000100 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.

Frequently asked questions
Does Aiqicha have an official developer API?+
Aiqicha does not publish a general-purpose public developer API. The platform is a consumer-facing product by Baidu. This Parse API provides programmatic access to the same company, shareholder, executive, and people data that the site surfaces.
What does `get_company_detail` return beyond basic registration info?+
The data object from get_company_detail includes company registration details such as legal status, registered capital, business scope, establishment date, address, and the legal representative. The exact set of sub-fields reflects what Aiqicha exposes on a company's public profile page and may vary by company type or registration completeness.
Does the API cover companies registered in Hong Kong, Macau, or Taiwan?+
Not currently. The API covers mainland Chinese registered companies indexed by Aiqicha. Coverage of HK, Macau, or Taiwan entities is limited or absent. You can fork the API on Parse and revise it to point to a different registry source for those jurisdictions.
Is risk or litigation data available through this API?+
Risk and litigation information is not exposed by the current six endpoints, which focus on company identity, shareholders, executives, and person profiles. You can fork the API on Parse and revise it to add an endpoint that retrieves the risk or legal proceedings data Aiqicha displays on company pages.
How should I handle the `pid` parameter across endpoints?+
The pid is a company or person identifier used by Aiqicha internally. You obtain a company pid from search_companies results and a person pid from search_people results. That pid is then passed directly to the detail, shareholder, or executive endpoints. Without a valid pid, those endpoints cannot return records.
Page content last updated . Spec covers 6 endpoints from aiqicha.baidu.com.
Related APIs in B2b DirectorySee all →
qcc.com API
Access Chinese business registration data from QCC.com. Search for companies by name, registration number, or credit code, and retrieve full company profiles including legal representative, industry, and registration authority details.
bizapedia.com API
Search for detailed business profiles and contact information from Bizapedia, including company details, employee data, and communication channels. Access comprehensive business intelligence to research companies and build targeted contact lists.
thecompaniesapi.com API
Enrich your company database with 80+ data points per company, search by industry or company details, and discover email patterns to drive your business intelligence. Find verified company information, get pricing data, and ask contextual questions about any organization to fuel your sales, marketing, or research efforts.
cbinsights.com API
Access CB Insights data including company and investor profiles, funding history, competitor maps, the unicorn list, and research reports.
zaubacorp.com API
Search and retrieve company and director information from Zauba Corp, India's public business registry research platform. Look up company details, contact information, director profiles, and associated filings.
einforma.com API
Search for companies, self-employed individuals, and executives across Spain's business directory, then access detailed company profiles including financial and operational information. Perfect for business research, lead generation, and competitive intelligence.
yandex.ru API
Search for businesses on Yandex Maps and instantly access their names, addresses, phone numbers, websites, social media links, hours of operation, and categories. Get detailed company information to find local services, verify business details, or build comprehensive business directories.
annualreports.com API
Search for and access thousands of international company annual reports in PDF and HTML formats, while filtering by ticker, exchange, industry, sector, company size, and location. Browse company profiles and financial documents across different markets and industries to find the information you need.