Mood Fabrics APImoodfabrics.com ↗
Access Mood Fabrics product data via 7 endpoints. Search fabrics by fiber content, weight, color, and pattern. Filter collections, get sale items, and fetch blog posts.
What is the Mood Fabrics API?
The Mood Fabrics API provides 7 endpoints for querying the moodfabrics.com catalog, covering fabric search, collection browsing, product detail retrieval, faceted filtering, sale items, color variants, and blog content from the Sewciety blog. The search_products endpoint accepts a keyword query and returns structured records with fields like content, color_family, pattern, weight, and price_per_yard, making it straightforward to build fabric-discovery tools or catalog integrations.
curl -X GET 'https://api.parse.bot/scraper/02d05ef1-7d1d-46cd-8662-e1b37cb9ce36/get_collection_products?page=1&limit=3&sort_by=best-selling&quickship=true&collection=fashion-fabrics' \ -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 moodfabrics-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.
"""Mood Fabrics SDK — browse collections, search fabrics, check variants and sales."""
from parse_apis.mood_fabrics_api import MoodFabrics, FilterType, Sort, ProductNotFound
client = MoodFabrics()
# Search for silk fabrics sorted by price
for product in client.products.search(query="silk", sort_by=Sort.PRICE_ASC, limit=3):
print(product.name, product.price_per_yard, product.content)
# Browse a specific collection with filtering by color
fabrics = client.collection("fashion-fabrics")
for product in fabrics.filter(filter_type=FilterType.COLOR, filter_value="Red", limit=3):
print(product.name, product.sku, product.color_family)
# Get sale items
sale_item = client.products.on_sale(limit=1).first()
if sale_item:
print(sale_item.name, sale_item.sale_price, sale_item.original_price)
# Drill into a product's color variants
if sale_item:
for variant in sale_item.variants.list(limit=5):
print(variant.title, variant.sku, variant.price, variant.available)
# Fetch full product details by SKU with error handling
try:
detail = client.products.get(sku="322655")
print(detail.name, detail.care_instructions)
except ProductNotFound as exc:
print(f"Product gone: {exc}")
# Read latest blog posts
for post in client.blogposts.list(limit=3):
print(post.title, post.date, post.link)
print("Exercised: products.search / collection.filter / products.on_sale / variants.list / products.get / blogposts.list")
Retrieve paginated product listings from a collection. Returns products with detailed metadata including fiber content, weight, pattern, color, and pricing. Collections group products by category (fashion-fabrics, new-arrivals, buttons, trims, etc). Default sort is best-selling. Quick Ship filter narrows to in-stock items ready for immediate dispatch.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number for pagination. |
| limit | integer | Maximum results per page. |
| sort_by | string | Sort option. Accepted values: best-selling, price-asc, price-desc, newest. |
| quickship | string | Filter by Quick Ship availability. Accepted values: true, false. |
| collection | string | Collection handle (e.g. fashion-fabrics, new-arrivals, all-hides, buttons, trims, sewing-notions, home-fabrics). |
{
"type": "object",
"fields": {
"products": "array of product objects with name, sku, price_per_yard, handle, content, color_family, pattern, weight, and other metadata",
"collection": "string, the collection handle that was queried",
"pagination": "object with totalResults, currentPage, totalPages, perPage, nextPage"
},
"sample": {
"data": {
"products": [
{
"sku": "478046",
"name": "Cotton Voile Lining - Off White",
"tags": [
"collection_659700547657"
],
"handle": "cotton-voile-lining-off-white-famous-australian-designer-deadstock-478046",
"is_new": false,
"weight": "53 GSM",
"content": "Cotton",
"on_sale": false,
"pattern": "Solid",
"image_url": "https://cdn.shopify.com/s/files/1/0920/6153/2233/files/478046_600x600.jpg",
"quick_ship": true,
"sale_price": null,
"product_url": "https://www.moodfabrics.com/products/cotton-voile-lining-off-white-famous-australian-designer-deadstock-478046",
"stock_count": "272",
"color_family": "WHITE",
"product_type": "Voile",
"original_price": 0,
"price_per_yard": 13.96,
"inventory_status": "In Stock",
"discount_percentage": null
}
],
"collection": "fashion-fabrics",
"pagination": {
"end": 3,
"begin": 1,
"perPage": 3,
"nextPage": 2,
"totalPages": 3334,
"currentPage": 1,
"previousPage": 0,
"totalResults": 18070,
"defaultPerPage": 40
}
},
"status": "success"
}
}About the Mood Fabrics API
Product Search and Collection Browsing
The search_products endpoint accepts a query string (e.g. "silk", "linen") and returns paginated product records. Each record includes name, sku, handle, price_per_yard, content (fiber composition), color_family, pattern, and a pagination object with totalResults, currentPage, totalPages, and nextPage. The get_collection_products endpoint lets you pull product listings from named collections such as fashion-fabrics, new-arrivals, all-hides, or sewing-notions, with optional filtering by quickship availability and sorting by best-selling, price-asc, price-desc, or newest.
Product Detail and Variant Data
get_product_details accepts either a handle (URL slug) or a numeric sku and returns the full product record, including weight in GSM, care_instructions as HTML, product_url, and color_family. To enumerate purchasable variants for a product — for example, all available colorways with individual price, available status, and options — use get_product_variants with the product handle. Handles and SKUs are obtainable from any listing endpoint.
Filtering and Sale Items
The filter_collection endpoint supports faceted filtering on four dimensions: product_type, color, pattern, and content. Filter values are case-sensitive (Red, not RED). You can scope filtering to a specific collection handle or leave it open across the full catalog. The get_sale_items endpoint returns discounted products with sale_price, original_price, and discount_percentage fields, paginated for bulk retrieval.
Blog Content
get_blog_posts returns posts from the Sewciety blog (blog.moodfabrics.com), delivered as WordPress post objects. Each record includes id, date (ISO format), link, title.rendered, content.rendered (full post HTML), and excerpt.rendered. This is useful for syndicating sewing tutorials, fabric guides, or project inspiration content alongside product data.
The Mood Fabrics API is a managed, monitored endpoint for moodfabrics.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when moodfabrics.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 moodfabrics.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 fabric search tool that filters by fiber content, pattern type, and color family using
search_productsandfilter_collection. - Aggregate and display sale pricing with
get_sale_itemsto track discount percentages across the Mood Fabrics catalog. - Populate a sewing project planner with detailed product specs — weight in GSM, care instructions, and price per yard — via
get_product_details. - Enumerate all color variants and availability for a specific fabric SKU using
get_product_color_variantsbefore presenting purchase options. - Sync new fabric arrivals into an inventory or e-commerce feed by querying the
new-arrivalscollection handle inget_collection_products. - Surface Sewciety blog tutorials and sewing guides alongside product listings by pulling
get_blog_postscontent with rendered HTML excerpts. - Filter notions and trims by product type within the
sewing-notionscollection usingfilter_collectionwithfilter_typeset toproduct_type.
| 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 Mood Fabrics have an official developer API?+
What does `filter_collection` return, and how strict is the filtering?+
filter_collection returns an array of product objects matching a single facet: product_type, color, pattern, or content. Filter values are case-sensitive — Silk and silk will produce different results. You can optionally scope the filter to a specific collection handle (e.g. fashion-fabrics), or omit it to filter across the full catalog. Pagination fields (totalResults, totalPages, nextPage) are included in all responses.Can I filter products by multiple facets at once (e.g. Red Silk Chiffon)?+
filter_collection endpoint accepts a single filter_type and filter_value per request. Multi-facet filtering requires chaining requests client-side. You can fork this API on Parse and revise it to add a combined-filter endpoint.Does the API expose stock quantity or exact yardage available for a fabric?+
get_product_color_variants endpoint returns an available boolean per variant, but numeric inventory levels are not exposed. You can fork this API on Parse and revise it to add deeper inventory detail if that data is accessible.How does pagination work across listing endpoints?+
search_products, get_collection_products, filter_collection, get_sale_items, get_blog_posts) return a pagination object with totalResults, currentPage, totalPages, perPage, and nextPage. Pass the page integer parameter to step through results. The limit parameter controls page size where supported.