1-800-Flowers API1800flowers.com ↗
Search the 1-800-Flowers product catalog and retrieve SKU-level retail and sale prices for any product variant via two simple endpoints.
What is the 1-800-Flowers API?
The 1-800-Flowers API provides two endpoints that cover product discovery and variant-level pricing across the 1800flowers.com catalog. search_products returns paginated results including price ranges, delivery type, and product URLs for any keyword query. get_product_pricing drills into a specific product's part number and returns retail and sale prices for every size and SKU variant, along with the product type code indicating florist or gift-box fulfillment.
curl -X POST 'https://api.parse.bot/scraper/5db52e02-370b-4d3a-a7ed-03cc8887e942/search_products' \
-H 'X-API-Key: $PARSE_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"page": "1",
"sort": "BEST_SELLERS",
"query": "roses",
"page_size": "36"
}'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 1800flowers-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: 1-800-Flowers SDK — bounded, re-runnable; every call capped."""
from parse_apis.api_1800flowers_com_api import Flowers1800, Sort, ProductNotFound
client = Flowers1800()
# Search for products sorted by price, capped at 3 results total.
for product in client.products.search(query="roses", sort=Sort.PRICE_ASC, limit=3):
print(product.name, product.sale_price_min, product.retail_price_min)
# Drill-down: take one product and fetch its detailed SKU pricing.
item = client.products.search(query="sunflowers", limit=1).first()
if item:
try:
pricing = item.pricing()
print(pricing.part_number, pricing.product_type)
for sku in pricing.prices[:3]:
print(sku.sku_part_number, sku.type, sku.value)
except ProductNotFound as e:
print("not found:", e.part_number)
print("exercised: products.search, product.pricing")
Full-text search over the 1-800-Flowers product catalog. Returns paginated products with price ranges, delivery type, and product URLs. Results are auto-iterated across pages.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number for paginated results. |
| sort | string | Sort order for results. |
| query | string | Search term to find products (e.g. 'roses', 'sunflowers', 'birthday'). |
| page_size | integer | Number of products per page (max 36). |
{
"type": "object",
"fields": {
"page": "current page number",
"query": "search term used",
"products": "array of product objects with pricing",
"page_size": "number of products requested per page",
"total_pages": "total number of pages available",
"total_products": "total matching products across all pages"
},
"sample": {
"data": {
"page": 1,
"query": "roses",
"products": [
{
"id": "1001-P-91790",
"url": "https://www.1800flowers.com/two-dozen-red-roses-91790",
"name": "Two Dozen Red Roses",
"brand": "1800flowers",
"base_code": "91790",
"image_url": "https://cdn3.1800flowers.com/wcsstore/Flowers/images/catalog/90926mrdv4df1xlx.jpg",
"part_number": "1001-P-91790",
"product_type": "REGULARPRODUCT",
"delivery_type": "GPT",
"sale_price_max": 102.99,
"sale_price_min": 69.99,
"retail_price_max": 102.99,
"retail_price_min": 69.99
}
],
"page_size": 36,
"total_pages": 6,
"total_products": 210
},
"status": "success"
}
}About the 1-800-Flowers API
Product Search
The search_products endpoint accepts a query string (e.g. 'roses', 'birthday', 'sunflowers') along with optional page, page_size (up to 36), and sort parameters. Responses include a products array with per-product pricing summaries, a total_products count, and total_pages to support full catalog traversal. All pages are auto-iterated, so you can walk the entire result set by incrementing the page parameter.
SKU-Level Pricing
The get_product_pricing endpoint takes a part_number — returned directly in search_products results — and resolves it to a prices array. Each entry in that array carries both retail and sale values for a distinct SKU variant, enabling precise price comparison across sizes. The response also includes a product_type field: FPT indicates florist-delivered arrangements and GPT indicates gift-box products, which reflects differences in fulfillment logistics.
Coverage and Data Shape
The two endpoints are designed to work in sequence: search for a category or keyword, collect part_number values from the results, then fetch full SKU pricing for the products you care about. The brand field in the pricing response carries the brand identifier code, which can be useful when the catalog includes items from 1-800-Flowers' affiliated brands. There is no authentication required on the caller side beyond standard Parse API credentials.
The 1-800-Flowers API is a managed, monitored endpoint for 1800flowers.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when 1800flowers.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 1800flowers.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?+
- Monitor retail and sale price changes across flower and gift SKUs by polling
get_product_pricingon a schedule. - Build a price comparison tool for floral arrangements by querying
search_productswith category keywords and comparingpricesarrays. - Identify which product variants are discounted by comparing
retailvssalevalues in thepricesresponse. - Categorize catalog items by fulfillment type using the
FPTandGPTproduct_type codes fromget_product_pricing. - Aggregate total catalog size for a given search term using
total_productsandtotal_pagesfromsearch_products. - Extract product URLs from
search_productsresults to build a curated gift recommendation feed. - Track pricing across affiliated brand SKUs by cross-referencing the
brandfield in pricing responses.
| 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 1-800-Flowers have an official developer API?+
What does `get_product_pricing` actually return, and how do I get a part_number?+
prices array where each entry contains retail and sale price values for one SKU variant of the product, plus product_type (FPT for florist delivery, GPT for gift box) and a brand code. The part_number input comes directly from the product objects returned by search_products — run a search first, then pass the part number into get_product_pricing.Does `search_products` return stock availability or delivery date estimates?+
search_products returns price ranges, delivery type, product URLs, and pagination metadata. It does not expose inventory levels or estimated delivery windows. You can fork this API on Parse and revise it to add an endpoint that retrieves delivery or availability data for a specific product.What is the maximum page size for `search_products`, and how does pagination work?+
page_size caps at 36 products per request. The response includes total_pages and total_products so you can determine how many requests are needed to cover a full result set. Increment the page parameter across requests to walk through all results.