Dick Blick APIdickblick.com ↗
Search Dick Blick's art supply catalog via API. Get product names, brands, price ranges, ratings, images, and category facets with filtering and pagination.
What is the Dick Blick API?
The Dick Blick API gives programmatic access to the dickblick.com art supplies catalog through 2 endpoints, returning product details including name, brand, price range, star rating, image URLs, and availability across hundreds of categories. The search_products endpoint supports filtering by brand or category, six sort orders, and pagination up to 100 results per page. A companion get_suggestions endpoint returns autocomplete completions and alternative search terms for partial queries.
curl -X GET 'https://api.parse.bot/scraper/c59c4ebb-b635-41d0-ad68-e8211377efd8/search_products?page=1&sort=relevance&brand=Golden&query=acrylic+paint&category=Acrylic+Paint&per_page=5' \ -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 dickblick-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.
"""Dick Blick Art Supplies — search products, filter by brand, get autocomplete suggestions."""
from parse_apis.dick_blick_art_supplies_product_search_api import DickBlick, Sort, ProductNotFound
client = DickBlick()
# Search for acrylic paint sorted by popularity, capped at 5 results.
for product in client.products.search(query="acrylic paint", sort=Sort.POPULAR, limit=5):
print(product.name, product.brand, product.price_min, product.rating)
# Drill into one product from a brand-filtered search.
product = client.products.search(query="brushes", brand="Princeton", limit=1).first()
if product:
print(product.name, product.sku_count, product.is_on_sale, product.savings_story)
# Autocomplete: get suggestions for a partial query.
suggestion = client.suggestions.get(query="waterco")
print(suggestion.suggested.text if suggestion.suggested else "no suggestion")
print(suggestion.alternatives)
# Typed error handling around a search that may find nothing.
try:
result = client.products.search(query="xyznonexistent12345", sort=Sort.PRICE_LOW, limit=1).first()
print(result.name if result else "no results")
except ProductNotFound as exc:
print(f"Not found for query: {exc.query}")
print("exercised: products.search / suggestions.get / Sort enum / ProductNotFound error")
Full-text search across Dick Blick's art supplies catalog. Returns product listings with pricing, ratings, and availability. Supports sorting by relevance, popularity, price, or name. Facets (brand and category counts) are included for filter discovery. Paginated; each product carries a price range reflecting its SKU variants.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number for pagination |
| sort | string | Sort order for results |
| brand | string | Filter by brand name (e.g., 'Golden', 'Princeton', 'Liquitex'). Exact match against brand facet values. |
| queryrequired | string | Search query (e.g., 'acrylic paint', 'brushes', 'prismacolor pencils') |
| category | string | Filter by category (e.g., 'Acrylic Paint', 'Brushes and Painting Tools'). Exact match against category facet values. |
| per_page | integer | Results per page (1-100) |
{
"type": "object",
"fields": {
"query": "search query string",
"facets": "object with brand and category arrays containing value and count pairs",
"products": "array of product objects with id, item_id, name, brand, description, url, image_url, thumbnail_url, price_min, price_max, rating, rating_count, department, sku_count, is_new, is_clearance, is_on_sale, savings_story",
"pagination": "object with current_page, total_pages, total_results, per_page"
},
"sample": {
"data": {
"query": "acrylic paint",
"facets": {
"brand": [
{
"count": 60,
"value": "Blick"
}
],
"category": [
{
"count": 554,
"value": "Paint and Mediums"
}
]
},
"products": [
{
"id": "00711-3",
"url": "https://www.dickblick.com/products/blickrylic-student-acrylics/",
"name": "Blickrylic Student Acrylic Paints and Sets",
"brand": "Blick",
"is_new": false,
"rating": 4.6,
"item_id": "00711-3",
"image_url": "https://cld-assets.dick-blick.com/image/upload/f_auto/q_auto/00711-Group-9-4ww.jpg",
"price_max": 183.4,
"price_min": 7.37,
"sku_count": 123,
"department": "Crafts & Textiles",
"is_on_sale": true,
"description": "Blickrylic Student Acrylic Paint is a true acrylic paint, priced for the budget-minded.",
"is_clearance": false,
"rating_count": 2097,
"savings_story": "SAVE 12-45%",
"thumbnail_url": "https://cld-assets.dick-blick.com/image/upload/f_auto/q_auto/00711-Group-9-4ww.jpg"
}
],
"pagination": {
"per_page": 5,
"total_pages": 191,
"current_page": 1,
"total_results": 953
}
},
"status": "success"
}
}About the Dick Blick API
Search Products
The search_products endpoint accepts a required query string and returns an array of product objects, each carrying fields like id, item_id, name, brand, description, url, image_url, thumbnail_url, price_min, price_max, and rating. The response also includes a pagination object (current_page, total_pages, total_results, per_page) so you can walk through large result sets. Use per_page to set 1–100 results at a time and page to advance through them.
Filtering and Sorting
Results can be narrowed with brand (e.g., Golden, Prismacolor, Princeton) and category (e.g., Acrylic Paint, Brushes and Painting Tools). The sort parameter accepts six values: relevance, popular, price_low, price_high, name_asc, and name_desc. The facets object in each response lists available brand and category values alongside hit counts, which is useful for building dynamic filter UIs.
Autocomplete Suggestions
The get_suggestions endpoint takes a partial query string and returns a suggested object containing completion text, type, source, and completed tokens — or null if no completion is available. It also returns an alternatives array of related search terms. This is designed for type-ahead search boxes where you want to surface common queries before the user finishes typing.
The Dick Blick API is a managed, monitored endpoint for dickblick.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when dickblick.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 dickblick.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 price-comparison tool for art supplies using
price_minandprice_maxacross multiple brands - Aggregate product ratings from Dick Blick using the
ratingfield to surface top-rated materials by category - Power a category browser with facet counts from the
facets.brandandfacets.categoryarrays - Implement a type-ahead search UI for art supplies using the
get_suggestionsendpoint with partial queries - Monitor product availability and price ranges across specific brands by querying
search_productswith abrandfilter - Index Dick Blick's catalog for a curated art supply recommendation engine using
name,description, andimage_url
| 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 Dick Blick have an official developer API?+
What does the `facets` field in the search response contain?+
facets object contains two arrays: brand and category. Each array entry is a value-count pair showing which filter values are present in the current result set and how many products match each one. This lets you build accurate filter menus without a separate lookup call.Does `get_suggestions` return full product records?+
get_suggestions endpoint returns lightweight autocomplete data: a suggested object with completion text, type, source, and completed tokens, plus an alternatives array of related search strings. Full product details like price, images, and ratings are only available through search_products.Does the API cover individual product detail pages with variant-level pricing or stock levels?+
price_min, price_max, and top-level product fields. Variant-level detail pages (specific sizes, colors, or SKU stock counts) are not exposed. You can fork this API on Parse and revise it to add a product detail endpoint that targets individual item pages.Are there any limitations on pagination depth?+
pagination object returns total_pages so you can determine how many pages exist. The per_page parameter accepts values from 1 to 100. Very deep pagination (high page values on broad queries) may return fewer results as the catalog coverage thins; check total_results against your expected count to detect this.