Chris Collins APIchriscollins.com ↗
Search and retrieve Chris Collins fragrance products via API. Get pricing, scent descriptions, and top/heart/base notes for every EDP in the catalog.
What is the Chris Collins API?
The Chris Collins API provides 2 endpoints for querying the chriscollins.com fragrance catalog, returning structured data including product name, USD price, product type, and a three-tier notes breakdown (top, heart, base). Use search_products to run full-text queries across the catalog or get_product to fetch complete details for a single fragrance by its URL handle.
curl -X GET 'https://api.parse.bot/scraper/f316f80d-5d5e-4961-9c77-645ea6480744/search_products?limit=5&query=oud' \ -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 chriscollins-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: Chris Collins Fragrances SDK — bounded, re-runnable; every call capped."""
from parse_apis.chriscollins_com_api import ChrisCollins, ProductNotFound
client = ChrisCollins()
# Search for fragrances by scent family
for product in client.products.search(query="oud", limit=3):
print(product.name, product.price)
if product.top_notes:
print(f" Top: {product.top_notes}")
if product.heart_notes:
print(f" Heart: {product.heart_notes}")
if product.base_notes:
print(f" Base: {product.base_notes}")
# Drill-down: get full product details by handle
item = client.products.search(query="sunset", limit=1).first()
try:
full = client.products.get(handle=item.handle)
print(full.name, full.price, full.product_type)
print(full.description[:120])
except ProductNotFound as e:
print(f"Product gone: {e.handle}")
print("exercised: products.search, products.get")
Full-text search over Chris Collins fragrance products. Returns matching products with name, pricing, scent description, and fragrance notes (top, heart, base). Results are capped at 10 per query by the upstream API. Some products (sets, samples) may not have notes data.
| Param | Type | Description |
|---|---|---|
| limit | integer | Maximum number of results to return (1-10). |
| queryrequired | string | Search term to find products (e.g. 'oud', 'sunset', 'chocolate'). |
{
"type": "object",
"fields": {
"count": "integer, number of products returned",
"products": "array of product objects with name, handle, price, description, and fragrance notes"
},
"sample": {
"data": {
"count": 1,
"products": [
{
"name": "KINGMAKER | MASTER OF OUD",
"price": "225.00",
"handle": "kingmaker-master-of-oud",
"top_notes": "Italian Bergamot, Cardamom Guatemala, Pimento Berry",
"base_notes": "Patchouli Indonesia, Sandalwood Spicatum, Pure Oud Assam",
"description": "Influential. Powerful. Intelligent.\nEXTRAIT DE PARFUM, 50ML VAPORISATEUR\nA noble fragrance for a strong leader...",
"heart_notes": "Natural Lavender, Rose Petals, Gurjun Balsam",
"product_type": "50ml Eau De Parfum"
}
]
},
"status": "success"
}
}About the Chris Collins API
Endpoints
The search_products endpoint accepts a required query string and an optional limit integer (1–10). It returns a count and a products array where each object includes the product name, handle, price, description, and fragrance notes fields. Results are capped at 10 per query. Searches work against fragrance names and descriptive keywords — terms like 'oud', 'chocolate', or 'sunset' surface relevant products across the catalog.
Product Detail
get_product takes a handle string — the URL slug for a product, such as 'kingmaker-master-of-oud' — and returns the full detail record. Response fields include name, price (USD string), handle, product_type (e.g. '50ml Eau De Parfum'), description, and three nullable notes fields: top_notes, heart_notes, and base_notes, each as a comma-separated string. Handles are surfaced directly in search_products results, making the two endpoints straightforward to chain.
Notes and Limitations
Not all product types carry notes data. Sets and sample products may return null for top_notes, heart_notes, and base_notes. The product_type field can be used to identify these edge cases. There is no pagination across the catalog — search_products returns at most 10 results per call, so narrowing the query term improves precision when the catalog match count is high.
The Chris Collins API is a managed, monitored endpoint for chriscollins.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when chriscollins.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 chriscollins.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 fragrance finder that lets users search by scent descriptor (e.g. 'woody', 'citrus') and displays matching products with notes breakdowns.
- Populate a comparison table of Chris Collins EDPs showing price, product type, and top/heart/base notes side by side.
- Power an ingredient-based filter that surfaces products sharing a specific base note such as 'oud' or 'sandalwood'.
- Sync Chris Collins product pricing and descriptions into an affiliate or editorial database.
- Generate structured fragrance profiles for use in recommendation engines or perfume review platforms.
- Validate or enrich an existing product list by looking up each handle via
get_productto confirm current price and notes data.
| 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 Chris Collins have an official developer API?+
What does `get_product` return for products that don't have notes data?+
get_product returns the full product record in all cases, but top_notes, heart_notes, and base_notes will be null for products like sets or samples that do not carry per-note breakdowns. The product_type field indicates the category of the product, which can help you identify these cases before attempting to render notes.How many results can I get from a single `search_products` call?+
query string or a lower limit value. Broad queries on a small catalog like this typically return the most relevant items within that cap.Does the API cover customer reviews or ratings for fragrances?+
Can I retrieve a full list of all products in the catalog without a search query?+
query string (search_products) or a handle (get_product); there is no catalog-browse or list-all endpoint. You can fork this API on Parse and revise it to add a catalog listing endpoint.