Alldatasheet APIalldatasheet.com ↗
Search alldatasheet.com by part number or description and retrieve direct PDF links for electronic component datasheets via two structured endpoints.
What is the Alldatasheet API?
The Alldatasheet.com API exposes 2 endpoints that let you search the alldatasheet.com catalog by part number or description text and retrieve direct PDF links for individual datasheet files. The search_datasheets endpoint returns up to 20 rows per page, each including the part number, manufacturer, description, and a compound key you can pass directly to get_datasheet to resolve the PDF URL and file size.
curl -X GET 'https://api.parse.bot/scraper/0028671a-7671-486a-b2dc-04e5a1461d8b/search_datasheets?query=LM358&search_by=part_number' \ -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 alldatasheet-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.
"""Walkthrough: search for electronic component datasheets and fetch the PDF link."""
from parse_apis.alldatasheet_com_api import Alldatasheet, SearchBy, MatchMode, DatasheetNotFound
client = Alldatasheet()
# Search for datasheets by part number prefix match (default mode).
for summary in client.datasheet_summaries.search(query="LM358", limit=5):
print(summary.part_number, "-", summary.manufacturer, "|", summary.description)
# Drill down: pick the first hit and fetch full detail including the PDF link.
hit = client.datasheet_summaries.search(
query="LM358",
search_by=SearchBy.PART_NUMBER,
match=MatchMode.MATCH_START,
limit=1,
).first()
if hit is not None:
try:
detail = hit.details()
except DatasheetNotFound:
print("Datasheet was removed since the search result was returned")
else:
print(detail.title)
print("PDF:", detail.pdf_url)
print("Size:", detail.file_size)
print("Manufacturer:", detail.manufacturer, detail.manufacturer_website)
# Search by description text to find datasheets across part families.
for summary in client.datasheet_summaries.search(
query="operational amplifier",
search_by=SearchBy.DESCRIPTION,
limit=3,
):
print(summary.datasheet_id, summary.part_number, summary.file_size)
print("exercised: datasheet_summaries.search / DatasheetSummary.details")
Searches the alldatasheet.com catalog and returns one page of datasheet listings (one row per datasheet file; the same part number can appear several times from different manufacturers or revisions). search_by selects whether the query is matched against part numbers or against datasheet description text; the part-number mode additionally accepts a match mode (prefix, contains, suffix, exact), while description mode ignores match and returns it as null. Each row carries the compound identity (datasheet_id, manufacturer_code, part_slug) needed by get_datasheet, plus the display part number, manufacturer name (the site truncates long names with '...'), description, revision note when shown, file size and page count as displayed by the site (e.g. '160Kb', '16P'). Pages hold 20 rows; page is a 1-based page index, omitted = 1, and total_pages/has_more come from the site's own result summary. A query with no matches returns an empty results array with total_results 0. One request per call.
| Param | Type | Description |
|---|---|---|
| page | integer | 1-based results page index (20 rows per page). |
| match | string | How the part number is matched in part_number mode (only applied there). match_start is the site's default combined exact/prefix match; included finds part numbers containing the query anywhere. |
| queryrequired | string | Part number (in part_number mode) or free-text description keywords (in description mode). One shape: LM358. |
| search_by | string | Which catalog field the query is matched against. |
{
"type": "object",
"fields": {
"page": "integer, page returned",
"match": "match mode used in part_number mode; null in description mode",
"query": "echo of the searched text",
"results": "array of datasheet rows: datasheet_id, manufacturer_code, part_number, part_slug, manufacturer, description, revision_note (nullable), file_size, pages, detail_url",
"has_more": "boolean, true when page < total_pages",
"search_by": "mode used: part_number or description",
"total_pages": "integer, number of result pages reported by the site",
"total_results": "integer, total matching datasheets reported by the site"
},
"sample": {
"data": {
"page": 1,
"match": "match_start",
"query": "LM358",
"results": [
{
"pages": "16P",
"file_size": "160Kb",
"part_slug": "LM358",
"detail_url": "https://www.alldatasheet.com/datasheet-pdf/pdf/11672/ONSEMI/LM358.html",
"description": "DUAL DIFFERENTIAL INPUT OPERATIONAL AMPLIFIERS",
"part_number": "LM358",
"datasheet_id": "11672",
"manufacturer": "ON Semiconductor",
"revision_note": "August, 2002 ??Rev. 11",
"manufacturer_code": "ONSEMI"
}
],
"has_more": true,
"search_by": "part_number",
"total_pages": 59,
"total_results": 1176
},
"status": "success"
}
}About the Alldatasheet API
Searching the Catalog
The search_datasheets endpoint accepts a query string and a search_by parameter set to either part_number or description. In part_number mode, the optional match parameter controls how the query is matched — the site's default is match_start, meaning the query matches from the beginning of the part number string. Results are paginated at 20 rows per page; the page parameter (1-based) selects which page to retrieve. The response includes total_results and total_pages as reported by the site, plus a has_more boolean for straightforward iteration. Each row in the results array carries a datasheet_id, manufacturer_code, part_slug, manufacturer, part_number, description, and a nullable revision_note.
Fetching a Specific Datasheet
The get_datasheet endpoint takes the three-field compound key emitted by search_datasheets — datasheet_id, manufacturer_code, and part_slug — and returns the resolved datasheet details. The key response field is pdf_url, a direct link to the PDF file served as application/pdf. The response also includes detail_url (the site's preview page), download_page_url, file_size (a human-readable string like '160.38 Kbytes'), manufacturer, part_number, and a nullable description and title.
Coverage and Pagination Notes
The same physical part number frequently appears multiple times in search results, once per manufacturer or datasheet revision. This is expected behavior from the catalog structure: distinct datasheet_id values distinguish separate PDF files for what may appear to be the same component. When paginating, use has_more rather than computing page < total_pages independently, as total_pages reflects the count the site reports at query time and can shift between requests.
The Alldatasheet API is a managed, monitored endpoint for alldatasheet.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when alldatasheet.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 alldatasheet.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 the direct PDF link for a specific IC part number during automated BOM verification.
- Build a cross-reference tool that surfaces all manufacturers for a given part number using
search_datasheetsinpart_numbermode. - Populate a component database with
manufacturer,description, andfile_sizefields returned byget_datasheet. - Search by description keywords to find datasheets for components where only a function is known, not an exact part number.
- Check the
revision_notefield to identify newer or alternate revisions of a component in the catalog. - Automate datasheet archiving by iterating paginated results and downloading
pdf_urltargets for offline storage.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 200 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
| Team | $300/mo | 20,000 | 300 req/min |
| Company | $1,000/mo | 100,000 | 500 req/min |
Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does alldatasheet.com have an official developer API?+
What does `search_datasheets` return when the same part appears under multiple manufacturers?+
manufacturer, manufacturer_code, and datasheet_id values. Each row represents a separate PDF file. You pass the row's compound key to get_datasheet to retrieve the specific PDF.Does the API return datasheet parametric data such as voltage ratings, pinout tables, or electrical specifications?+
Is there a limit to how many result pages can be retrieved?+
total_pages value is whatever the site reports for a given query, and results are retrieved one page at a time with 20 rows per page. Very broad description-mode queries can return large page counts. The has_more boolean in each response tells you whether another page exists, which is the reliable way to drive pagination loops.Can I search by manufacturer name alone, without knowing a part number or description?+
search_by modes are part_number and description; there is no manufacturer-name filter parameter. You can fork this API on Parse and revise it to add a manufacturer-scoped search endpoint if the underlying catalog exposes that capability.