Pullandbear APIpullandbear.com ↗
Access Pull & Bear's product catalog, category tree, search results, and store locations via 5 structured endpoints. Returns prices, sizes, colors, and images.
What is the Pullandbear API?
The Pull & Bear API provides 5 endpoints covering product search, detailed product data, category browsing, and physical store lookup. The search_products endpoint accepts a keyword query and optional section filter to return paginated product summaries with prices, color variants, size availability, and image URLs. Each result includes a product_id that feeds directly into get_product_details for full item data including material composition and care instructions.
curl -X GET 'https://api.parse.bot/scraper/04d213ae-8a00-4982-995a-3d467f7af318/search_products?limit=5&query=jacket&offset=0§ion=woman' \ -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 pullandbear-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: Pull & Bear SDK — search products, drill into details, browse categories."""
from parse_apis.pullandbear_com_api import PullAndBear, Section, InputNotFound
client = PullAndBear()
# Search for jackets in the women's section, cap at 3 results.
for product in client.product_summaries.search(query="jacket", section=Section.WOMAN, limit=3):
print(product.name, product.price, [c.name for c in product.colors])
# Drill down: take the first search hit and fetch full details.
hit = client.product_summaries.search(query="jeans", section=Section.MAN, limit=1).first()
if hit is not None:
detail = hit.details()
print(detail.name, detail.description)
for comp in detail.composition:
print(f" {comp.part}: {[f'{c.material} {c.percentage}' for c in comp.components]}")
print(f" Care: {detail.care[:2]}")
# Point lookup by a known product_id (derived from the previous search).
if hit is not None:
try:
product = client.products.get(product_id=hit.product_id)
print(product.name, product.reference)
except InputNotFound:
print("Product no longer available")
# Browse the category tree and list products in the first leaf category.
top = client.categories.list(limit=1).first()
if top is not None and top.children:
leaf = top.children[0]
for p in client.product_summaries.list_by_category(category_id=leaf.id, limit=3):
print(p.name, p.price)
# Find nearby stores.
for store in client.stores.search(lat="40.7128", lng="-74.006", limit=3):
print(store.name, store.city, store.is_open)
print("exercised: product_summaries.search / .details / products.get / categories.list / product_summaries.list_by_category / stores.search")
Search products by keyword within a section (woman or man). Returns paginated results with product names, prices, availability by size, color options, and images. Each result includes a product_id that can be used with get_product_details.
| Param | Type | Description |
|---|---|---|
| limit | integer | Maximum number of products to return per request. |
| queryrequired | string | Search term (e.g. 'jacket', 'jeans', 't-shirt'). |
| offset | integer | Pagination offset (0-based index of the first result to return). |
| section | string | Product section to search within. Omitting defaults to 'woman'. |
{
"type": "object",
"fields": {
"limit": "pagination limit used",
"total": "number of results returned in this response",
"offset": "pagination offset used",
"products": "array of product summaries with product_id, name, price, old_price, colors, availability, images"
},
"sample": {
"data": {
"limit": 5,
"total": 3,
"offset": 0,
"products": [
{
"name": "Faux leather balloon jacket",
"price": 79.9,
"colors": [
{
"id": 717,
"name": "Chocolate"
}
],
"images": [
"https://static.pullandbear.net/assets/public/88c7/91f7/46534da3a46c/36889a09a08d/07700317717-K1/07700317717-K1.jpg?ts=1771518082062"
],
"old_price": null,
"product_id": "753545375",
"availability": [
{
"size": "XS",
"available": true
}
]
}
]
},
"status": "success"
}
}About the Pullandbear API
Product Search and Detail
search_products accepts a query string and an optional section parameter (woman or man, defaulting to woman) along with limit and offset for pagination. Each product in the response carries product_id, name, price, old_price, a colors array, size availability, and images. Pass any product_id to get_product_details to retrieve the full record: description, reference, product_type, composition (material breakdown by component), care instructions, and per-color size arrays where each size object includes sku, available, price, and old_price.
Category Navigation
get_categories returns the complete category tree with no required inputs. The response is a recursive structure of objects with id, name, and children, covering Woman, Man, and Landing top-level sections. Take any leaf id from that tree and pass it as category_id to get_category_products to retrieve matching products in the same summary shape as search results. The endpoint notes that leaf categories with a DISPLAY_CONTENT attribute produce the most complete product lists.
Store Locations
get_stores takes lat and lng coordinates and searches within a 100 km radius. Each store object in the response includes id, name, latitude, longitude, address_lines, city, state, zip_code, country, country_code, phones, store type, opening hours, and operational status. This makes it straightforward to build store-finder features or map integrations using real geographic coordinates.
The Pullandbear API is a managed, monitored endpoint for pullandbear.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when pullandbear.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 pullandbear.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?+
- Track price drops on specific items by comparing
pricevsold_pricefields across periodic calls tosearch_productsorget_category_products - Build a size availability monitor that alerts when a specific
skuwithin a color variant flips toavailable: trueinget_product_details - Populate a product feed or affiliate catalog using name, images, description, and reference codes from
get_product_details - Navigate the full category hierarchy via
get_categoriesto display a structured Pull & Bear menu in a third-party app - Locate the nearest Pull & Bear store by passing user GPS coordinates to
get_storesand rendering results on a map - Compare material
compositiondata across multiple products to filter by fabric type for sustainability-focused shopping tools - Aggregate seasonal catalog changes by iterating leaf categories from
get_categoriesand callingget_category_productsfor each
| 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 Pull & Bear have an official public developer API?+
What does `get_product_details` return beyond what `search_products` provides?+
search_products returns a summary per product: name, price, old_price, colors, availability, and images. get_product_details adds the full description, reference code, product_type, a composition array breaking down material percentages by component, and a care array of care instruction strings. It also expands each color into a full sizes array where every size has its own sku, available flag, price, and old_price.Does `get_category_products` support pagination or filtering by size and color?+
category_id and returns all matching products in one response with a total count. It does not currently accept pagination parameters or size/color filters. You can fork the API on Parse and revise it to add those filtering or pagination inputs.Are product reviews or ratings available through this API?+
How does the `get_stores` search radius work, and what store fields are returned?+
lat and lng coordinates. There is no parameter to adjust this radius. Returned fields per store include id, name, coordinates, address_lines, city, state, zip_code, country, country_code, phones, store type, opening hours, and operational status.