notonthehighstreet APInotonthehighstreet.com ↗
Access products, sellers, reviews, and categories from notonthehighstreet.com via a structured API. Search listings, fetch product details, and browse by category.
What is the notonthehighstreet API?
This API covers notonthehighstreet.com across 8 endpoints, giving programmatic access to product listings, seller profiles, customer reviews, category browsing, and search suggestions. The get_product_details endpoint returns over a dozen fields per product including pricing, variant options, HTML description, availability, and image URLs — enough to build a full product page without any supplementary requests.
curl -X GET 'https://api.parse.bot/scraper/41ef3ecc-2511-4869-b2e8-58ffc4e69d8f/search_products?page=1&sort=newest&query=personalised+gifts&page_size=60' \ -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 notonthehighstreet-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.
"""Not On The High Street SDK — browse unique handmade gifts, drill into details and reviews."""
from parse_apis.not_on_the_high_street_api import NotOnTheHighStreet, Sort, ProductNotFound
client = NotOnTheHighStreet()
# Search newest personalised gifts using the Sort enum.
for item in client.products.search(query="personalised gifts", sort=Sort.NEWEST, limit=3):
print(item.title, item.price.currency, item.price.amount)
# Autocomplete: get search suggestions for a partial query.
for s in client.products.suggestions(query="birthday", limit=5):
print(s.suggestion)
# Take the first result and navigate to full product details.
summary = client.products.search(query="music print", limit=1).first()
if summary:
product = summary.details()
print(product.title, product.inventory_status, product.number_of_reviews)
# Walk the product's reviews sub-resource.
for review in product.reviews.list(per_page=5, limit=3):
print(review.rating, review.comment[:60])
# Get similar product recommendations.
for rec in product.similar(limit=3):
print(rec.title, rec.price.amount)
# Browse a seller's catalog via the constructible Seller resource.
seller = client.seller(shortcode="elevencorners")
for p in seller.products.list(limit=3):
print(p.title, p.seller_slug, p.product_slug)
# Typed error handling — catch when a product slug doesn't exist.
try:
client.products.get(seller_slug="elevencorners", product_slug="nonexistent-product-xyz")
except ProductNotFound as exc:
print(f"Not found: {exc.seller_slug}/{exc.product_slug}")
print("exercised: products.search / products.suggestions / summary.details / product.reviews.list / product.similar / seller.products.list / products.get")Full-text search over the marketplace product catalog. `query` matches product titles and descriptions; results are paginated with configurable page size. Returns product summaries with pricing, seller info, and availability. Omitting query returns all products. Each ProductSummary includes seller_slug and product_slug for navigating to full details.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number. |
| sort | string | Sort order. Accepted value: 'newest'. Only applied on page 1 via SSR fallback. |
| query | string | Search keyword (e.g. 'personalised gifts'). Omitting returns all products. |
| page_size | integer | Results per page. |
{
"type": "object",
"fields": {
"facets": "array of facet objects with key, dynamicFacet, and values",
"metadata": "object containing attributionToken",
"products": "array of product summary objects with title, price, partner, images, code, seller_slug, product_slug",
"pagination": "object with currentPage, totalPages, offset, pageSize, resultsReturnedThisPage, totalResults"
}
}About the notonthehighstreet API
Product and Search Data
The search_products endpoint accepts a query string, page, page_size, and an optional sort parameter (accepted value: newest). Responses include a products array with title, price, partner, images, code, and availability, alongside a facets array and a pagination object carrying totalResults, totalPages, currentPage, and pageSize. The get_search_suggestions endpoint takes a partial query and returns both searchTerms suggestions and partners suggestions — useful for autocomplete UIs.
Product Detail and Reviews
get_product_details requires a seller_slug and a product_slug (both drawn from the product URL). It returns the full product record: title, price (with currency, amount, and exponent), images, options for variants, a detailed attributes object, an HTML description, and an availability string. Complementary endpoints get_product_reviews and get_similar_products accept a numeric product_code. Reviews come back with per-review rating, date, comment, and any seller response, plus aggregate averageProductRating and numberOfReviews.
Sellers and Categories
get_seller_profile returns a partner object with name, id, startDate, storySummary, storyText, logo, coverImage, and location data — enough to render a full seller page. get_seller_products lists that seller's full catalogue with pagination. For category browsing, get_category_products accepts a category_path string (e.g. gifts/gifts-for-her) and returns products alongside facets and pagination metadata, mirroring the search response shape.
The notonthehighstreet API is a managed, monitored endpoint for notonthehighstreet.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when notonthehighstreet.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 notonthehighstreet.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 personalised gift recommendation engine using
search_productsquery results filtered by facets - Aggregate seller profiles and product counts to create a directory of independent UK makers
- Monitor product availability and price fields from
get_product_detailsfor price-tracking tools - Display customer sentiment dashboards using
averageProductRatingand review counts fromget_product_reviews - Power an autocomplete search bar using the
searchTermssuggestions fromget_search_suggestions - Populate a category landing page with facet-filtered product listings via
get_category_products - Surface related items in a gift-finder app using
get_similar_productsrecommendations
| 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 notonthehighstreet.com offer an official developer API?+
What does `get_product_details` return beyond basic listing data?+
get_product_details returns the full product record for a single item: title, price (with currency, amount, exponent), all images, options (variant choices), an attributes object, an HTML description string, and an availability status. You need both the seller_slug and product_slug from the product's URL to call it. The search and category endpoints return a lighter product shape without the full attributes or description.How does pagination work across endpoints?+
search_products, get_seller_products, get_category_products) use an integer page parameter. Responses include a pagination object with currentPage, totalPages, and totalResults. get_product_reviews also paginates via page and per_page, and its pagination object includes totalEntries and totalPages.Does the API cover order history, wishlists, or checkout data?+
Can I filter search results by price range or other facets?+
search_products endpoint returns a facets array in the response — each facet has a key and available values — but the endpoint inputs only accept query, page, page_size, and sort. Passing facet filters as query parameters is not currently supported. You can fork the API on Parse and revise the endpoint to add facet filter parameters.