evarueda APIevarueda.com ↗
Access evarueda.com shop data via API: courses, subscriptions, gift vouchers, and products with category filters, search, and full product details.
What is the evarueda API?
The evarueda.com API exposes 3 endpoints covering the full product catalog of a Barcelona-based bridal hair and makeup training shop. Use list_products to page through courses, academy subscriptions, gift vouchers, and physical products with free-text search and category filtering, or call get_product with a product_id to retrieve complete details including full HTML description, all image URLs, pricing fields, and grouped child product IDs.
curl -X GET 'https://api.parse.bot/scraper/f3712731-322d-44ab-8269-8592c1a643bd/list_products?order=desc&orderby=date&per_page=10' \ -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 evarueda-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: Eva Rueda Shop SDK — browse categories, list products, drill into detail."""
from parse_apis.evarueda_com_api import EvaRueda, ProductOrderBy, SortOrder, ProductNotFound
client = EvaRueda()
# Browse all shop categories to find one worth filtering on.
for cat in client.categories.list(limit=5):
print(cat.name, f"({cat.product_count} products)")
# List the newest products, sorted by date descending.
for summary in client.product_summaries.list(
orderby=ProductOrderBy.DATE,
order=SortOrder.DESC,
per_page=10,
limit=5,
):
print(summary.name, summary.price, summary.currency_code, summary.on_sale)
# Drill down: take the first product summary and fetch its full detail.
hit = client.product_summaries.list(limit=1).first()
if hit is not None:
product = hit.details()
print(product.name, product.description_html[:120])
print("images:", product.images)
print("sold individually:", product.sold_individually)
# Point lookup by a known product id (derived from the listing above).
if hit is not None:
try:
detail = client.products.get(product_id=hit.product_id)
print(detail.name, detail.price, detail.currency_code)
except ProductNotFound:
print("product no longer exists")
print("exercised: categories.list / product_summaries.list / details / products.get")
Lists shop products (online courses, academy subscriptions, gift vouchers/beauty boxes, physical products) one page per call, in one round trip. Each row is one product with its price fields as EUR amounts (whole euros as the shop uses no decimals), stock/purchasability flags, categories and a short HTML description. Supports a free-text search, a category filter by category_id (from list_product_categories), and sorting. Pagination is caller-controlled through page and per_page: page defaults to 1, per_page defaults to 20 and is clamped to 100; total and total_pages come from the shop and has_more tells whether a next page exists. A search or filter with no matches returns an empty products array with total 0. A price of regular_price greater than sale_price with on_sale true indicates a discounted product.
| Param | Type | Description |
|---|---|---|
| page | integer | 1-based page number. |
| order | string | Sort direction. |
| search | string | Free-text search over product names/descriptions. Omitted = all products. |
| orderby | string | Sort key. |
| per_page | integer | Products per page; values above 100 are clamped to 100. |
| category_id | integer | Restrict to one product category; use category_id values from list_product_categories.categories[*].category_id. Omitted = all categories. |
{
"type": "object",
"fields": {
"page": "page echoed as requested",
"total": "total matching products reported by the shop",
"has_more": "true when page < total_pages",
"per_page": "effective page size after clamping",
"products": "array of product summaries: product_id (integer key for get_product), name, slug, type (simple/grouped/course/subscription), permalink, sku (null when unset), price/regular_price/sale_price (numbers in currency_code), currency_code, on_sale, is_purchasable, is_in_stock, average_rating, review_count, short_description_html, image_url (main image, null if none), categories (array of {category_id,name,slug}), tags (array of names)",
"total_pages": "total pages at this per_page"
},
"sample": {
"data": {
"page": 1,
"total": 22,
"has_more": true,
"per_page": 10,
"products": [
{
"sku": null,
"name": "Plancha Crimper ER Beauty",
"slug": "plancha-crimper-para-el-cabello",
"tags": [],
"type": "simple",
"price": 60,
"on_sale": false,
"image_url": "https://evarueda.com/wp-content/uploads/2025/06/095a4b2e-9199-4260-97c2-464421c12eb7_resultado.webp",
"permalink": "https://evarueda.com/producto/plancha-crimper-para-el-cabello/",
"categories": [
{
"name": "Productos",
"slug": "productos",
"category_id": 37
}
],
"product_id": 6874,
"sale_price": 60,
"is_in_stock": true,
"review_count": 0,
"currency_code": "EUR",
"regular_price": 60,
"average_rating": 0,
"is_purchasable": true,
"short_description_html": "<p>Plancha Crimper para el Cabello – Herramienta Profesional para crear peinados texturizados</p>"
}
],
"total_pages": 3
},
"status": "success"
}
}About the evarueda API
Catalog Browsing
The list_products endpoint returns paginated product summaries from the evarueda.com shop. Each response includes product_id, name, slug, type (one of simple, grouped, course, or subscription), price fields in EUR, stock and purchasability flags, and a permalink. The per_page parameter accepts values up to 100 (higher values are clamped). Filter by category using category_id values from list_product_categories, sort with orderby and order, or narrow results with the search parameter. The has_more and total_pages fields drive pagination across calls.
Product Detail
The get_product endpoint accepts a product_id from list_products and returns the full product record. This adds description_html (the complete product description as HTML), images (an array of image URLs), categories (array of {category_id, name, slug}), sold_individually (whether purchase is limited to one unit per order), and grouped_product_ids (child IDs for grouped products such as multi-person vouchers). Price is returned as a number in currency_code, alongside regular_price and sale_price.
Category Taxonomy
The list_product_categories endpoint takes no parameters and returns all shop categories in a single call. Each entry includes category_id, name, slug, description, parent_id (0 for top-level categories), product_count, and permalink. The full set is small, so one call is sufficient to build a complete category tree for use as category_id filter values in list_products.
The evarueda API is a managed, monitored endpoint for evarueda.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when evarueda.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 evarueda.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?+
- Mirror the evarueda.com product catalog into an external booking or CMS platform using list_products and get_product.
- Monitor price changes on courses and subscriptions by polling list_products and comparing price, regular_price, and sale_price over time.
- Build a category-filtered course browser using category_id values from list_product_categories passed into list_products.
- Extract full product descriptions and images via get_product to populate a translated or localized version of the shop.
- Identify grouped products (e.g. multi-person vouchers) by checking type and grouped_product_ids in get_product responses.
- Track stock and purchasability flags across the catalog to alert when sold-out courses become available again.
- Search specific course types or beauty box keywords using the search parameter in list_products to build a filtered product feed.
| 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.