Developer Center · API v1

ChemBuyGuide API reference

Integrate public product, supplier, and chemistry tools through a versioned OpenAPI contract. Sandbox and production use separate gateways, data, and risk boundaries.

OPENAPI3.1
API
v1.0.0
FORMAT
JSON
ENCODING
UTF-8

ENVIRONMENT

Choose an API environment

Sandbox

For integration and acceptance testing with isolated data and quotas.

Base URL—
GET/home/statisticsProducts

Get homepage data statistics

Count active, non-private chemical records and external company profiles, excluding inactive and deleted records. Company counts do not imply verified or supplying vendors. Countries/regions are deduplicated from non-empty two-letter country codes on those companies. The homepage sends the visitor browser's IANA time zone. Each time zone has its own daily snapshot, calculated on the first request and cached until its next local midnight, including daylight-saving changes. The ISO 8601 updated_at timestamp is displayed in the visitor's time zone. The API retains raw counts; the homepage rounds down to K+/M+/B+ and hides country coverage below 10. Unavailable statistics return an error instead of fabricated zero values.

No authenticationSign-in required to test

Parameters

NameInTypeDescription
timezoneOptionalquerystringVisitor IANA time zone, such as America/New_York or Asia/Shanghai. Defaults to UTC when omitted; invalid zones return an error.

cURL example

# API documentation environment is not configured

Online API test

The server builds requests from an allowlist; target URLs, methods, and headers cannot be customized.

—
Sign-in required to test

Sign in before using online API tests in this environment.

Sign in to test
200 response example
{
  "code": 0,
  "message": "ok",
  "data": {
    "chemical_count": 120000,
    "company_count": 2400,
    "country_count": 15,
    "updated_at": "2026-09-05T06:00:00.000000Z"
  }
}
GET/home/es-searchProducts

Search products

Search the public product catalog by CAS number, name, or keyword.

No authenticationSign-in required to test

Parameters

NameInTypeDescription
qRequiredquerystringCAS number, product name, or search keyword.

cURL example

# API documentation environment is not configured

Online API test

The server builds requests from an allowlist; target URLs, methods, and headers cannot be customized.

—
Sign-in required to test

Sign in before using online API tests in this environment.

Sign in to test
200 response example
{
  "code": 200,
  "message": "success",
  "data": [
    {
      "id": 1001,
      "cas": "64-17-5",
      "name": "Ethanol",
      "molecular_formula": "C2H6O",
      "url": "/products/64-17-5-ethanol-example"
    }
  ]
}
GET/v1/products/{id}Products

Get product details

Retrieve a product and supplier summary by numeric ID, product code, or public canonical slug.

No authenticationSign-in required to test

Parameters

NameInTypeDescription
idRequiredpathstringNumeric product ID, product code, or public slug.
pageOptionalqueryintegerRelated-supplier page number, capped at 25.
per_pageOptionalqueryintegerSuppliers per page, capped at 20.

cURL example

# API documentation environment is not configured

Online API test

The server builds requests from an allowlist; target URLs, methods, and headers cannot be customized.

—
Sign-in required to test

Sign in before using online API tests in this environment.

Sign in to test
200 response example
{
  "code": 200,
  "message": "success",
  "data": {
    "id": 1001,
    "cas": "64-17-5",
    "display_name": "Ethanol",
    "molecular_formula": "C2H6O",
    "molecular_weight": "46.07",
    "canonical_smiles": "CCO",
    "suppliers": {
      "data": [],
      "meta": {
        "current_page": 1,
        "per_page": 10
      }
    }
  }
}
GET/v1/suppliers/directory/alphabet/{alphabet}/{offset}Suppliers

List suppliers by name initial

List public suppliers by English name initial, 18 per page. Increase offset by 18 for the next page. Responses omit phone numbers, email addresses, and internal totals.

No authenticationSign-in required to test

Parameters

NameInTypeDescription
alphabetRequiredpathstringOne English letter, A-Z.
offsetRequiredpathintegerRecord offset: 0, 18, 36, and so on; maximum 486.

cURL example

# API documentation environment is not configured

Online API test

The server builds requests from an allowlist; target URLs, methods, and headers cannot be customized.

—
Sign-in required to test

Sign in before using online API tests in this environment.

Sign in to test
200 response example
{
  "code": 0,
  "message": "ok",
  "data": {
    "data": [
      {
        "id": 1001,
        "name": "Example Chemical Supplier",
        "slug": "example-chemical-supplier",
        "country_code": "CN",
        "city": "Nanjing",
        "phone_numbers": [],
        "email_addresses": [],
        "contacts": []
      }
    ],
    "meta": {
      "current_page": 1,
      "per_page": 18,
      "has_more_pages": false
    }
  }
}
GET/v1/suppliers/{slug}Suppliers

Get supplier details

Retrieve a supplier and product summary by public slug; anonymous responses remove non-public contact details.

No authenticationSign-in required to test

Parameters

NameInTypeDescription
slugRequiredpathstringPublic supplier slug.
pageOptionalqueryintegerRelated-product page number, capped at 25.
per_pageOptionalqueryintegerProducts per page, capped at 20.

cURL example

# API documentation environment is not configured

Online API test

The server builds requests from an allowlist; target URLs, methods, and headers cannot be customized.

—
Sign-in required to test

Sign in before using online API tests in this environment.

Sign in to test
200 response example
{
  "code": 200,
  "message": "success",
  "data": {
    "display_name": "Example Chemical Supplier",
    "slug": "example-chemical-supplier",
    "country_code": "CN",
    "website": "https://supplier.example.com",
    "products": {
      "data": [],
      "meta": {
        "current_page": 1,
        "per_page": 10
      }
    }
  }
}
POST/structure-visualizeChemistry

Render a structure preview

Render a SMILES string as an SVG structure preview. Use sandbox for integration work; production calls use live service capacity.

No authenticationSign-in required to test

Request body

{
  "smi": "CCO",
  "software": "rdkit"
}

cURL example

# API documentation environment is not configured

Online API test

The server builds requests from an allowlist; target URLs, methods, and headers cannot be customized.

—
Sign-in required to test

Sign in before using online API tests in this environment.

Sign in to test
200 response example
{
  "code": 200,
  "message": "success",
  "data": {
    "svg": "<svg xmlns=\"http://www.w3.org/2000/svg\">...</svg>",
    "contentType": "image/svg+xml; charset=utf-8"
  }
}

The contract is maintained in ci-web source; only operationIds registered on this page enter the online-test allowlist.