Element Vape APIelementvape.com ↗
Access Element Vape product listings, full product details, category navigation, and customer reviews via a structured JSON API. Covers prices, variants, ratings, and more.
What is the Element Vape API?
The Element Vape API provides 4 endpoints for accessing vape product data from elementvape.com, covering search and browse, full product details, category navigation, and customer reviews. The search_products endpoint returns up to 60 results per page with fields including brand, SKU, price, availability, rating, and category. The get_product_details endpoint exposes variant-level data — flavors, colors, stock quantities — alongside a full media gallery and structured pricing.
curl -X GET 'https://api.parse.bot/scraper/e69a2f25-8f1d-4dba-a2b4-77bbbd0c0f87/search_products?sort=RELEVANCE&limit=5&query=disposable&offset=0' \ -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 elementvape-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: Element Vape SDK — search products, drill into details, read reviews."""
from parse_apis.element_vape_product_api import ElementVape, Sort, ProductNotFound
client = ElementVape()
# Search for top-rated disposable vapes
for product in client.productsummaries.search(query="disposable", sort=Sort.RATING_DESC, limit=3):
print(product.name, product.brand, product.price, product.rating)
# Drill into the first result's full details
item = client.productsummaries.search(query="smok", sort=Sort.PRICE_ASC, limit=1).first()
if item:
detail = item.details()
print(detail.name, detail.price.final_price, detail.price.currency, detail.in_stock)
for opt in detail.configurable_options:
print(opt.label, [v.label for v in opt.values[:3]])
# Browse reviews for a known product
product = client.products.get(slug="geek-bar-pulse-x")
for review in product.reviews.list(per_page=5, limit=3):
print(review.title, review.score, review.user, review.verified_buyer)
# Typed error handling for a missing product
try:
client.products.get(slug="nonexistent-product-xyz-99999")
except ProductNotFound as exc:
print(f"Product not found: {exc.slug}")
# List categories
for cat in client.categories.list(limit=5):
print(cat.label, cat.url, cat.depth)
print("exercised: productsummaries.search / products.get / product.reviews.list / categories.list / ProductNotFound")
Search and browse vape products via Klevu search engine. Returns paginated product listings with name, brand, price, rating, availability, and basic specifications. Pagination uses offset-based indexing. Each product includes a slug for fetching full details via get_product_details.
| Param | Type | Description |
|---|---|---|
| sort | string | Sort order for results. |
| limit | integer | Number of results per page (max 60). |
| query | string | Search query term (e.g., 'disposable', 'e-liquid', 'smok'). Defaults to wildcard matching all products. |
| offset | integer | Offset for pagination (0-based). |
| category | string | Filter by category name (e.g., 'Disposable Vapes', 'Nicotine Salts E-Liquid'). Omitting returns all categories. |
{
"type": "object",
"fields": {
"count": "integer number of products in this page",
"query": "string the query term used",
"offset": "integer current offset",
"products": "array of product summary objects",
"total_results": "integer total matching products"
},
"sample": {
"data": {
"count": 2,
"query": "disposable",
"offset": 0,
"products": [
{
"sku": "GV239",
"name": "Geek Bar Pulse X 25K Disposable",
"slug": "geek-bar-pulse-x",
"brand": "Geek Vape",
"price": "29.99",
"colors": [],
"rating": 4.928705,
"flavors": [],
"currency": "USD",
"in_stock": true,
"image_url": "https://d2svuhg8jeu25r.cloudfront.net/klevu_images/300X300/g/e/geek_bar_pulse_x_25k_disposable_-_default.png",
"categories": [
"Brands",
"Geek Vape",
"Disposable Vapes"
],
"description": "Shop the Geek Bar Pulse X 25K Disposable...",
"product_url": "https://www.elementvape.com/geek-bar-pulse-x",
"start_price": "29.99",
"rating_count": 533,
"specifications": {},
"total_variants": 542
}
],
"total_results": 306
},
"status": "success"
}
}About the Element Vape API
Search and Browse Products
The search_products endpoint accepts a query string (e.g., 'disposable', 'smok', 'nicotine salts') and returns paginated product listings via the site's Klevu-powered search engine. Each result includes name, brand, sku, price, in_stock, rating, rating_count, image_url, and categories. The sort parameter accepts values like PRICE_ASC, RATING_DESC, and NEW_ARRIVAL_DESC. Use offset and limit (max 60) for pagination across the total_results count. Omitting query triggers wildcard matching across all products.
Product Details and Variants
The get_product_details endpoint takes a URL slug (e.g., 'geek-bar-pulse-x') and returns the full product record. This includes a variants array where each entry carries id, sku, price, stock_qty, in_stock, image_url, and attributes — covering flavor and color options for configurable products. The price object exposes final_price, regular_price, currency, and an optional discount_amount. A full images array with url, label, and position is included alongside the stripped-HTML description.
Reviews and Categories
The get_product_reviews endpoint accepts a product_id (obtained from get_product_details) and returns paginated review objects with score, title, content, created_at, verified_buyer, votes_up, votes_down, sentiment, and user. A summary object provides total_reviews, average_score, and star_distribution. The get_categories endpoint returns the full top-level navigation menu as an array of objects with label, url, and depth, giving a complete picture of the site's category taxonomy for building browse flows.
The Element Vape API is a managed, monitored endpoint for elementvape.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when elementvape.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 elementvape.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 changes across vape product variants (disposables, mods, e-liquids) using
search_productssorted byPRICE_ASC. - Build a vape product catalog with flavor and color variant data pulled from
get_product_detailsvariantsarray. - Aggregate customer sentiment for specific brands by collecting
score,verified_buyer, andsentimentfields across paginated reviews. - Populate a category navigation tree using
get_categorieslabels, URLs, and depth values. - Monitor in-stock status across SKUs by polling
in_stockandstock_qtyfields fromget_product_details. - Compare competitor pricing on new arrivals using
search_productswithsort=NEW_ARRIVAL_DESCand thepriceobject. - Identify top-rated products in a specific category by filtering
search_productsbycategoryand sorting byRATING_DESC.
| 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 Element Vape have an official developer API?+
How do I get variant-level data like flavor or color options?+
get_product_details with the product slug. The variants array in the response includes each option's name, sku, price, stock_qty, in_stock, image_url, and attributes — covering flavor and color configurations for products that offer them.Does the reviews endpoint return unverified reviews separately from verified buyers?+
get_product_reviews includes a verified_buyer boolean field, so you can filter verified and unverified reviews client-side. The summary object provides aggregate total_reviews, average_score, and star_distribution without a verified-only breakdown. The API currently covers review content, scores, and votes. You can fork it on Parse and revise to add server-side verified-only filtering.Are subcategories or nested category hierarchies returned by `get_categories`?+
get_categories endpoint returns top-level navigation items with a depth field, but does not currently return nested subcategory trees or child-category relationships. You can fork it on Parse and revise to add a subcategory traversal endpoint.What are the pagination limits for `search_products`?+
limit parameter accepts a maximum of 60 results per page. Use offset (0-based) alongside total_results in the response to paginate through the full result set for a given query or category filter.