Critical Spares Express API
Programmatic access to the world's largest industrial bearing cross-reference database. Look up part equivalences, find substitutes, and integrate cross-reference data into your ERP, CMMS, or procurement systems.
Fast
Sub-100ms response times. Lookup any part number and get cross-references instantly.
Secure
API key authentication with SHA-256 hashing. Per-key rate limits and usage logging.
Comprehensive
172,000+ parts, 260,000+ cross-references, 400+ manufacturers from OEM interchange data.
Base URL
https://cse-parts.com/api/v2Deprecation and Sunset headers. Please migrate to v2.Quick Start
curl -H "Authorization: Bearer YOUR_API_KEY" \
"https://cse-parts.com/api/v2/lookup?pn=6205"What's New in v2
- Pagination on manufacturers endpoint (page, page_size, search)
- New endpoint:
GET /api/v2/part/:pnfor direct part details - New endpoint:
GET /api/v2/statsfor database statistics - Enhanced metadata: data_sources, api_version, pagination info in every response
- Status field in batch results (found/not_found/error)
- Net votes included in equivalence responses
Authentication
All API requests require authentication via a Bearer token in the Authorization header. API keys are issued by the CSE team and follow the format cse_live_<48 hex chars>.
# Include your API key in every request
curl -H "Authorization: Bearer cse_live_abc123..." \
"https://cse-parts.com/api/v2/lookup?pn=6205"Keep your API key secret
Never expose your API key in client-side code, public repositories, or browser requests. Always make API calls from your server backend.
Getting an API Key
- Contact the CSE team to request partner access
- You'll receive a one-time API key — save it securely
- The key prefix (e.g.,
cse_live_abc1) is used for identification - If compromised, contact us to revoke and reissue
Rate Limiting
Each API key has per-minute and per-day rate limits. Limits are returned in response headers so you can implement client-side throttling.
| Header | Description |
|---|---|
| X-RateLimit-Limit-Minute | Maximum requests per minute |
| X-RateLimit-Remaining-Minute | Remaining requests this minute |
| X-RateLimit-Limit-Day | Maximum requests per day |
| X-RateLimit-Remaining-Day | Remaining requests today |
| X-RateLimit-Reset | Unix timestamp when the minute window resets |
When you exceed a rate limit, the API returns 429 Too Many Requests. Wait until the reset timestamp before retrying.
Part Lookup
/api/v2/lookupLook up a single part number and get all known cross-references, equivalences, and dimensional data. Returns the best match plus alternatives if the exact part isn't found.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| pn | string | Required | Part number to look up (e.g., 6205, 22310-E1, NA4905) |
| manufacturer | string | Optional | Filter by manufacturer name (e.g., SKF, FAG, NTN) |
Code Examples
curl -H "Authorization: Bearer YOUR_API_KEY" \
"https://cse-parts.com/api/v2/lookup?pn=6205&manufacturer=SKF"Example Response
{
"success": true,
"data": {
"part": {
"id": 33,
"part_number": "6205",
"manufacturer": "SKF",
"category": "bearing",
"bearing_type": "ball",
"dimensions": {
"inner_diameter_mm": 25,
"outer_diameter_mm": 52,
"width_mm": 15
},
"seal_type": null,
"tolerance_class": null,
"source_count": 2
},
"equivalences": [
{
"part_number": "6205",
"manufacturer": "FAG",
"tier": "verified_exact",
"confidence": 0.95,
"bearing_type": "ball",
"dimensions": {
"inner_diameter_mm": 25,
"outer_diameter_mm": 52,
"width_mm": 15
},
"votes": { "up": 3, "down": 0 },
"justification": "OEM interchange confirmed by Schaeffler and NTN-SNR"
},
{
"part_number": "6205",
"manufacturer": "NTN",
"tier": "exact",
"confidence": 0.88,
"bearing_type": "ball",
"dimensions": {
"inner_diameter_mm": 25,
"outer_diameter_mm": 52,
"width_mm": 15
},
"votes": { "up": 1, "down": 0 },
"justification": "Tier 1 (direct interchange): NTN-SNR cross-reference"
}
],
"other_matches": []
},
"meta": {
"request_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"query": { "pn": "6205", "manufacturer": "SKF" },
"result_count": 2,
"timestamp": "2026-02-08T12:00:00.000Z"
}
}Batch Lookup
/api/v2/batch-lookupLook up multiple part numbers in a single request. Maximum 50 parts per batch. Each part is resolved independently — failures for one part don't affect others.
Request Body
{
"parts": [
{ "pn": "6205" },
{ "pn": "22310", "manufacturer": "SKF" },
{ "pn": "NA4905" },
{ "pn": "51105" }
]
}Code Examples
curl -X POST \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"parts":[{"pn":"6205"},{"pn":"22310","manufacturer":"SKF"}]}' \
"https://cse-parts.com/api/v2/batch-lookup"Example Response
{
"success": true,
"data": {
"results": [
{
"pn": "6205",
"manufacturer": null,
"part": { "id": 33, "part_number": "6205", "manufacturer": "Generic", ... },
"equivalences": [ ... ]
},
{
"pn": "22310",
"manufacturer": "SKF",
"part": { "id": 1205, "part_number": "22310", "manufacturer": "SKF", ... },
"equivalences": [ ... ]
}
]
},
"meta": {
"request_id": "...",
"query_count": 2,
"total_equivalences": 45,
"timestamp": "2026-02-08T12:00:00.000Z"
}
}Manufacturers
/api/v2/manufacturersList all manufacturers in the database with their part counts. Useful for building manufacturer dropdowns or understanding data coverage.
Code Examples
curl -H "Authorization: Bearer YOUR_API_KEY" \
"https://cse-parts.com/api/v2/manufacturers"Example Response
{
"success": true,
"data": {
"manufacturers": [
{ "name": "SKF", "part_count": 15615 },
{ "name": "Timken", "part_count": 14817 },
{ "name": "NTN", "part_count": 10845 },
{ "name": "FAG", "part_count": 7137 },
{ "name": "NSK", "part_count": 5842 },
{ "name": "KOYO", "part_count": 4231 },
{ "name": "INA", "part_count": 3156 }
]
},
"meta": {
"request_id": "...",
"total_manufacturers": 400,
"timestamp": "2026-02-08T12:00:00.000Z"
}
}Part Detailv2 New
/api/v2/part/:pnGet detailed information about a specific part number, including all manufacturer variants. Unlike lookup, this returns all variants of the same part number across different manufacturers.
Code Examples
curl -H "Authorization: Bearer YOUR_API_KEY" \
"https://cse-parts.com/api/v2/part/6205"Example Response
{
"success": true,
"data": {
"part_number": "6205",
"variants": [
{
"id": 1234,
"part_number": "6205",
"manufacturer": "SKF",
"bearing_type": "Deep Groove Ball Bearing",
"dimensions": { "inner_diameter_mm": 25, "outer_diameter_mm": 52, "width_mm": 15 },
"data_sources": ["schaeffler_interchange", "ntn_snr_interchange"]
},
{
"id": 5678,
"part_number": "6205",
"manufacturer": "NTN",
"bearing_type": "Deep Groove Ball Bearing",
"dimensions": { "inner_diameter_mm": 25, "outer_diameter_mm": 52, "width_mm": 15 },
"data_sources": ["ntn_snr_interchange"]
}
],
"manufacturer_count": 2
},
"meta": {
"api_version": "2.0.0",
"request_id": "...",
"variant_count": 2,
"timestamp": "2026-02-08T12:00:00.000Z"
}
}Database Statsv2 New
/api/v2/statsGet current database statistics including total parts, equivalences, manufacturers, and data source breakdown. Useful for monitoring data coverage and freshness.
Code Examples
curl -H "Authorization: Bearer YOUR_API_KEY" \
"https://cse-parts.com/api/v2/stats"Example Response
{
"success": true,
"data": {
"total_parts": 172925,
"total_equivalences": 260254,
"total_manufacturers": 400,
"verified_equivalences": 21932,
"data_sources": [
{ "name": "schaeffler_interchange", "part_count": 8060 },
{ "name": "ntn_snr_interchange", "part_count": 20356 },
{ "name": "john_deere_catalog", "part_count": 144509 }
]
},
"meta": {
"api_version": "2.0.0",
"request_id": "...",
"timestamp": "2026-02-08T12:00:00.000Z"
}
}Error Codes
All errors follow a consistent JSON envelope. The error.code field provides a machine-readable error identifier.
{
"success": false,
"error": {
"code": "UNAUTHORIZED",
"message": "Invalid or missing API key"
},
"meta": {
"timestamp": "2026-02-08T12:00:00.000Z"
}
}| HTTP Status | Error Code | Description |
|---|---|---|
| 400 | MISSING_PARAM | Required parameter is missing from the request |
| 400 | INVALID_BODY | Request body is malformed or missing required fields |
| 400 | BATCH_TOO_LARGE | Batch request exceeds the 50-part limit |
| 401 | UNAUTHORIZED | API key is missing, invalid, or malformed |
| 403 | KEY_REVOKED | API key has been revoked by an administrator |
| 403 | KEY_EXPIRED | API key has passed its expiration date |
| 429 | RATE_LIMIT_MINUTE | Per-minute rate limit exceeded |
| 429 | RATE_LIMIT_DAY | Per-day rate limit exceeded |
| 429 | QUOTA_EXCEEDED | Monthly quota exceeded — upgrade your tier |
| 500 | INTERNAL_ERROR | Unexpected server error — contact support |
Webhooks
Register a webhook URL on your API key to receive real-time notifications when new cross-references are added for parts you've previously queried. This enables proactive inventory updates without polling.
Event: new_cross_reference
Fired when a new equivalence edge is added for a part number you've looked up in the past 30 days.
POST https://your-server.com/webhooks/cse
Content-Type: application/json
X-CSE-Signature: sha256=abc123...
{
"event": "new_cross_reference",
"timestamp": "2026-02-08T12:00:00.000Z",
"data": {
"part_number": "6205",
"manufacturer": "SKF",
"new_equivalence": {
"part_number": "6205-2RS1",
"manufacturer": "SKF",
"tier": "exact",
"confidence": 0.92
}
}
}Signature Verification
Each webhook delivery includes an X-CSE-Signature header containing an HMAC-SHA256 signature of the request body using your webhook secret.
import hmac
import hashlib
def verify_webhook(payload: bytes, signature: str, secret: str) -> bool:
expected = "sha256=" + hmac.new(
secret.encode(), payload, hashlib.sha256
).hexdigest()
return hmac.compare_digest(expected, signature)Webhook Setup
Contact the CSE team to configure your webhook URL and receive your webhook secret. Webhooks are delivered with exponential backoff retry (3 attempts).
SDKs & Client Libraries
Download our official SDKs to integrate the CSE Parts API into your application in minutes. Both packages include full type definitions, automatic retry on rate limits, and webhook signature verification.
Full-featured Python client with requests library. Supports all v2 endpoints, automatic retry, and webhook verification.
client = CSEPartsClient("cse_live_...")
SDK Features
Try It Live
Test the Part Lookup endpoint directly from this page. Enter your API key and a part number below.
Need help? Contact us at [email protected]