DatasheetCatalog APIdatasheetcatalog.com ↗
Search electronic component datasheets, retrieve PDF links, and browse by manufacturer or category using the DatasheetCatalog.com API. 6 endpoints.
What is the DatasheetCatalog API?
The DatasheetCatalog API provides 6 endpoints for finding electronic component datasheets, retrieving direct PDF download links, and browsing the full catalog by manufacturer or component category. The search_datasheets endpoint accepts part numbers or keywords and returns matching components with manufacturer attribution, while get_datasheet_detail exposes all available PDF variants for a given component, including per-manufacturer pdf_url fields.
curl -X GET 'https://api.parse.bot/scraper/6287ee91-bb37-4c16-9240-16ab0dfe8072/search_datasheets' \ -H 'X-API-Key: $PARSE_API_KEY'
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 datasheetcatalog-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.
"""
Datasheet Catalog API Client
API for retrieving electronic component datasheets, manufacturers, and categories.
Get your API key from: https://parse.bot/settings
"""
import os
import requests
from typing import Optional, Dict, Any, List
class ParseClient:
"""Client for the Datasheet Catalog 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 = "027b2f76-cacf-481b-9203-dace127d74c8"
self.api_key = api_key or os.getenv("PARSE_API_KEY")
if not self.api_key:
raise ValueError("API key not provided and PARSE_API_KEY environment variable not set")
def _call(self, endpoint: str, method: str = "POST", **params) -> Dict[str, Any]:
"""
Make an API call to the Parse endpoint.
Args:
endpoint: The endpoint name (e.g., 'search_datasheets')
method: HTTP method ('GET' or 'POST')
**params: Parameters to send with the request
Returns:
Response JSON as a dictionary
Raises:
requests.RequestException: If the API call fails
"""
url = f"{self.base_url}/scraper/{self.scraper_id}/{endpoint}"
headers = {
"X-API-Key": self.api_key,
"Content-Type": "application/json"
}
if method.upper() == "GET":
response = requests.get(url, headers=headers, params=params)
elif method.upper() == "POST":
response = requests.post(url, headers=headers, json=params)
else:
raise ValueError(f"Unsupported HTTP method: {method}")
response.raise_for_status()
return response.json()
def search_datasheets(self, query: str, page: int = 1) -> Dict[str, Any]:
"""
Search for datasheets by part name, description, or keyword.
Args:
query: Search keyword or part number
page: Page number for pagination (default: 1)
Returns:
Dictionary with 'query', 'page', and 'results' list
"""
return self._call("search_datasheets", method="GET", query=query, page=page)
def get_datasheet_detail(self, url: str) -> Dict[str, Any]:
"""
Get detailed information for a specific component datasheet.
Args:
url: URL of the component detail page
Returns:
Dictionary with 'part_name', 'detail_url', 'manufacturers', and 'related_parts'
"""
return self._call("get_datasheet_detail", method="GET", url=url)
def get_manufacturer_list(self) -> Dict[str, Any]:
"""
Retrieve the full list of all manufacturers indexed in the catalog.
Returns:
Dictionary with 'manufacturers' list
"""
return self._call("get_manufacturer_list", method="GET")
def get_manufacturer_components(self, manufacturer_slug: str, page: int = 1) -> Dict[str, Any]:
"""
Get all datasheets/components listed for a specific manufacturer.
Args:
manufacturer_slug: Manufacturer slug from get_manufacturer_list
page: Page number for pagination (default: 1)
Returns:
Dictionary with 'manufacturer', 'page', and 'components' list
"""
return self._call("get_manufacturer_components", method="GET",
manufacturer_slug=manufacturer_slug, page=page)
def get_category_list(self) -> Dict[str, Any]:
"""
Retrieve the full hierarchical list of component categories/functions.
Returns:
Dictionary with 'categories' list
"""
return self._call("get_category_list", method="GET")
def get_category_components(self, category_slug: str) -> Dict[str, Any]:
"""
Get datasheets listed under a specific component category/function.
Args:
category_slug: Category slug from get_category_list
Returns:
Dictionary with 'category' and 'components' list
"""
return self._call("get_category_components", method="GET", category_slug=category_slug)
def main():
"""Practical workflow example: search for components and retrieve detailed information."""
# Initialize the client
client = ParseClient()
# Workflow 1: Search for a component and get details for top results
print("=" * 80)
print("WORKFLOW: Search for Timer Components and Get Detailed Datasheets")
print("=" * 80)
search_query = "NE555"
print(f"\n1. Searching for '{search_query}'...")
search_results = client.search_datasheets(query=search_query, page=1)
print(f" Found {len(search_results['results'])} results")
# Get details for the first few results
for i, component in enumerate(search_results['results'][:2], 1):
print(f"\n [{i}] {component['part_name']} by {component['manufacturer']}")
print(f" Description: {component['description']}")
# Fetch detailed information including PDF links
detail_url = component['detail_url']
print(f"\n Fetching detailed datasheet information...")
try:
details = client.get_datasheet_detail(url=detail_url)
print(f" Found {len(details['manufacturers'])} manufacturer(s) with PDFs:")
for mfg in details['manufacturers']:
print(f" - {mfg['manufacturer']}: {mfg['description']}")
print(f" PDF: {mfg['pdf_url']}")
if details['related_parts']:
print(f" Related parts: {', '.join([p['part_name'] for p in details['related_parts']])}")
except requests.RequestException as e:
print(f" Error fetching details: {e}")
# Workflow 2: Browse components by manufacturer
print("\n" + "=" * 80)
print("WORKFLOW: Browse Components by Manufacturer")
print("=" * 80)
print("\n2. Getting list of manufacturers...")
manufacturers = client.get_manufacturer_list()
# Show first 3 manufacturers
print(f" Found {len(manufacturers['manufacturers'])} manufacturers")
print(" Showing first 3:")
for i, mfg in enumerate(manufacturers['manufacturers'][:3], 1):
print(f"\n [{i}] {mfg['name']}")
# Get components from this manufacturer
components_data = client.get_manufacturer_components(
manufacturer_slug=mfg['slug'],
page=1
)
print(f" Components on page 1: {len(components_data['components'])}")
for comp in components_data['components'][:2]:
print(f" - {comp['part_name']}: {comp['description']}")
# Workflow 3: Browse by category
print("\n" + "=" * 80)
print("WORKFLOW: Browse Components by Category")
print("=" * 80)
print("\n3. Getting list of categories...")
categories = client.get_category_list()
print(f" Found {len(categories['categories'])} categories")
print(" Showing first 2:")
for i, category in enumerate(categories['categories'][:2], 1):
print(f"\n [{i}] {category['name']}")
# Get components in this category
category_components = client.get_category_components(
category_slug=category['slug']
)
component_count = len(category_components['components'])
print(f" Contains {component_count} component(s)")
for comp in category_components['components'][:3]:
print(f" - {comp['part_name']} ({comp['manufacturer']})")
print("\n" + "=" * 80)
print("Workflow completed successfully!")
print("=" * 80)
if __name__ == "__main__":
main()Search for datasheets by part name, description, or keyword. Returns list of matching components.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number for pagination |
| queryrequired | string | Search keyword or part number |
{
"type": "object",
"fields": {
"page": "integer",
"query": "string",
"results": "array of objects (part_name, description, manufacturer, detail_url)"
},
"sample": {
"page": 1,
"query": "NE555",
"results": [
{
"part_name": "NE555",
"detail_url": "http://www.datasheetcatalog.com/datasheets_pdf/N/E/5/5/NE555.shtml",
"description": "General Purpose Timer",
"manufacturer": "Texas Instruments"
}
]
}
}About the DatasheetCatalog API
Search and Component Detail
The search_datasheets endpoint accepts a query string (part number, keyword, or description fragment) and an optional page integer for pagination. Each result in the results array includes part_name, description, manufacturer, and a detail_url that can be passed directly to get_datasheet_detail. That detail endpoint returns a manufacturers array where each entry carries its own pdf_url (a direct link to the datasheet PDF), a pdf_page_url, and a description — useful when the same part is manufactured by multiple vendors with differing specs. It also returns a related_parts array of similar components with their own detail_url values.
Browsing by Manufacturer
get_manufacturer_list returns the full catalog of indexed manufacturers as an array of objects with name, slug, and url. Pass a manufacturer_slug from that list to get_manufacturer_components to retrieve all datasheets attributed to that manufacturer, paginated via the page parameter. Each component in the response carries part_name, description, and detail_url.
Browsing by Category
get_category_list returns the hierarchical list of component function categories — each with name, slug, and url. Pass a category_slug to get_category_components to get all components in that category, with each entry including part_name, description, manufacturer, and detail_url. Together the category and manufacturer endpoints make it possible to enumerate the catalog without an upfront search query.
The DatasheetCatalog API is a managed, monitored endpoint for datasheetcatalog.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when datasheetcatalog.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 datasheetcatalog.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?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Resolve a part number to a direct PDF datasheet link using
search_datasheetsthenget_datasheet_detail. - Compare PDF datasheets from multiple manufacturers for the same component using the
manufacturersarray inget_datasheet_detail. - Build a component browser that enumerates all parts from a given supplier via
get_manufacturer_components. - Classify components by function by iterating category slugs from
get_category_listand fetching parts viaget_category_components. - Populate a parts database with manufacturer metadata by combining
get_manufacturer_listwith paginatedget_manufacturer_componentscalls. - Surface related components for a BOM alternative-search tool using the
related_partsfield fromget_datasheet_detail. - Index component descriptions and part names for full-text search by paginating through manufacturer or category component listings.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 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.
Does DatasheetCatalog.com offer an official developer API?+
What does `get_datasheet_detail` return beyond a single PDF link?+
manufacturers array, so if a part is sourced from several manufacturers you get a separate pdf_url, pdf_page_url, manufacturer, and description entry for each one. It also returns a related_parts array listing similar components with their own detail_url values for further lookup.Does `search_datasheets` support filtering by manufacturer or category directly?+
search_datasheets endpoint accepts only a query string and an optional page for pagination — there is no manufacturer or category filter parameter on the search endpoint itself. Manufacturer- and category-scoped browsing is handled by the dedicated get_manufacturer_components and get_category_components endpoints. You can fork the API on Parse and revise it to add filtered search parameters to the search endpoint.Does `get_category_components` support pagination?+
get_category_components endpoint does not expose a page parameter — it returns results for a category slug without pagination controls, unlike get_manufacturer_components which does support page. For large categories this may limit the result set. You can fork the API on Parse and revise it to add pagination support to the category components endpoint.Does the API expose component specifications like voltage, package type, or pin count from within the datasheet?+
part_name, description, manufacturer, and pdf_url — rather than parsed electrical or physical specifications extracted from the datasheet content. You can fork the API on Parse and revise it to add a spec-extraction endpoint targeting specific component parameters.