BrickLink APIbricklink.com ↗
Search LEGO parts, sets, and minifigures on BrickLink. Get pricing, availability, categories, color guide data, and wanted lists via 6 API endpoints.
What is the BrickLink API?
The BrickLink API exposes 6 endpoints covering the full BrickLink LEGO catalog and marketplace, including live pricing and availability. The search_catalog endpoint returns up to 25 items per page with new and used seller counts, minimum prices, and quantity available. Additional endpoints cover item details, category listings, the complete color guide, and authenticated access to user wanted lists.
curl -X GET 'https://api.parse.bot/scraper/780098fe-28a1-4efb-8c4e-adbcea1a29c4/search_catalog?query=brick+2x4&item_type=P' \ -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 bricklink-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.
"""BrickLink catalog walkthrough: search parts, drill into details, browse colors."""
from parse_apis.bricklink_api import BrickLink, ItemType, ItemNotFound
client = BrickLink()
# Search for parts matching "brick 2x4" — limit caps total items fetched.
for part in client.itemsummaries.search(query="brick 2x4", item_type=ItemType.PARTS, limit=5):
print(part.name, part.new_min_price, part.used_sellers)
# Drill into the first result to see for-sale listings.
summary = client.itemsummaries.search(query="plate 1x2", limit=1).first()
if summary:
detail = summary.details()
print(detail.name, detail.internal_id)
for listing in detail.for_sale_preview[:3]:
print(listing.strSellerUsername, listing.strColor, listing.mInvSalePrice)
# Fetch an item directly by catalog number.
try:
item = client.items.get(item_no="3001")
print(item.name, item.item_type, len(item.for_sale_preview))
except ItemNotFound as exc:
print(f"Item not found: {exc.item_no}")
# List categories for sets.
for cat in client.categories.list(item_type=ItemType.SETS, limit=5):
print(cat.id, cat.name)
# Browse the color guide — top colors by demand.
for color in client.colors.list(limit=10):
print(color.name, color.parts, color.wanted, color.for_sale)
print("Exercised: itemsummaries.search / summary.details / items.get / categories.list / colors.list")
Full-text search across the BrickLink catalog by keyword. Returns up to 25 items per page with pricing and availability counts for new and used conditions. Results are scoped to one item_type at a time. Each result includes min prices and seller counts sufficient for comparison without a detail fetch.
| Param | Type | Description |
|---|---|---|
| queryrequired | string | Search keyword (e.g., 'brick 2x4', 'millennium falcon') |
| item_type | string | Item type filter: P (Parts), S (Sets), M (Minifigures), B (Books), G (Gear), C (Catalogs), I (Instructions), O (Original Boxes) |
{
"type": "object",
"fields": {
"items": "array of item objects with item_no, name, item_type, new_qty, new_sellers, new_min_price, used_qty, used_sellers, used_min_price",
"total": "integer total count of matching items"
},
"sample": {
"data": {
"items": [
{
"name": "Brick 2 x 4",
"item_no": "3001",
"new_qty": 6216421,
"used_qty": 2459479,
"item_type": "P",
"new_sellers": 6070,
"used_sellers": 74791,
"new_min_price": "US $0.007",
"used_min_price": "US $0.0009"
}
],
"total": 1340
},
"status": "success"
}
}About the BrickLink API
Catalog Search and Item Details
The search_catalog endpoint accepts a query string and an optional item_type filter (P for Parts, S for Sets, M for Minifigures, B for Books, G for Gear, C for Catalogs, I for Instructions, O for Original Boxes). Each result in the items array includes item_no, name, item_type, and split new/used market data: new_qty, new_sellers, new_min_price, used_qty, used_sellers, and used_min_price. The total field indicates the full result count across pages.
The get_item_details endpoint takes an item_no and optional item_type and returns the item's name, item_no, item_type, internal_id, and a for_sale_preview array with current seller listings and pricing snapshots. This is useful for building item pages or populating price-check tools without running a broad search.
Categories and Color Guide
The list_categories endpoint accepts an item_type parameter and returns an array of category objects with id and name. This lets you build navigation trees or filter UIs that mirror BrickLink's taxonomy. The get_color_guide endpoint requires no inputs and returns the full BrickLink color reference: each color object carries an id, name, and integer counts for parts, in_sets, wanted, and for_sale. This is the canonical BrickLink color inventory across the entire catalog.
Wanted Lists (Authenticated)
The get_wanted_lists endpoint returns all wanted lists for an authenticated user as an array of objects with id and name. The get_wanted_list_items endpoint accepts a list_id (use 0 for the default list) and returns a wantedItems array alongside a wantedListInfo object. Both endpoints require valid session credentials tied to a BrickLink account.
The BrickLink API is a managed, monitored endpoint for bricklink.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when bricklink.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 bricklink.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?+
- Build a LEGO part price tracker using
new_min_priceandused_min_pricefromsearch_catalog. - Populate a set inventory tool by querying
get_item_detailsfor each set number and reading thefor_sale_preview. - Generate a color availability dashboard using
parts,in_sets, andfor_salefromget_color_guide. - Create a category browser for LEGO parts or sets using the
idandnamefields fromlist_categories. - Sync a user's BrickLink wanted list into an external shopping or collection management app via
get_wanted_list_items. - Cross-reference new vs. used seller depth on a specific part by comparing
new_sellersandused_sellersfrom search results. - Build a minifigure lookup tool by filtering
search_catalogwithitem_type=Mand surfacing pricing and availability.
| 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 BrickLink have an official developer API?+
What does `search_catalog` return for pricing, and does it include historical price data?+
new_min_price, used_min_price, new_qty, used_qty, new_sellers, and used_sellers. Historical price data such as six-month averages or past sale prices is not currently covered. The API covers live catalog and marketplace snapshots. You can fork it on Parse and revise to add endpoints targeting historical price ranges.What is the pagination behavior for `search_catalog`?+
total integer indicating the full match count. There is no built-in page parameter exposed in the current endpoint definition, so results beyond the first 25 are not directly accessible through this endpoint as documented.Does the API return part-out values or set investment data?+
Are store inventory or seller profile details available?+
get_item_details endpoint includes a for_sale_preview array with seller info and pricing for a specific item, but full store inventory browsing and seller profile pages are not currently covered as standalone endpoints. You can fork it on Parse and revise to add seller-specific or store-level endpoints.