Quilt Index APIquiltindex.org ↗
Access 102,000+ documented quilts from the Quilt Index. Search by keyword, retrieve full records with maker, materials, provenance, and institution fields.
What is the Quilt Index API?
The Quilt Index API provides access to over 102,000 quilt records documented by museums, guilds, and historical societies across the United States. Two endpoints cover the full workflow: search_quilts runs keyword searches returning paginated summaries across titles, makers, patterns, materials, and techniques, while get_quilt retrieves a complete structured record — including provenance, inscriptions, and contributing institution — for any single quilt by its KID identifier.
curl -X POST 'https://api.parse.bot/scraper/4cd0500f-31f4-4c5e-ba44-1c9fd25fc43f/search_quilts' \
-H 'X-API-Key: $PARSE_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"page": "1",
"sort_by": "Maker(A-Z)",
"keywords": "star"
}'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 quiltindex-org-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: Quilt Index SDK — search quilts, drill into records, typed errors."""
from parse_apis.quiltindex_org_api import QuiltIndex, SortBy, QuiltNotFound
client = QuiltIndex()
# Search for star quilts sorted by date (oldest first), capped at 5.
for quilt in client.quilt_summaries.search(keywords="star", sort_by=SortBy.DATE_OLD_NEW, limit=5):
print(quilt.pattern, quilt.maker, quilt.date)
# Drill into the first result for full record details.
hit = client.quilt_summaries.search(keywords="log cabin", limit=1).first()
if hit:
detail = hit.details()
print(detail.title, detail.maker, detail.dimensions)
print(detail.materials, detail.quilting_techniques, detail.pattern_names)
# Fetch a quilt directly by KID and handle not-found gracefully.
try:
quilt = client.quilts.get(kid="19-15-5793")
print(quilt.title, quilt.date, quilt.location_state)
print(quilt.contributing_institution, quilt.documentation_project)
except QuiltNotFound as exc:
print(f"Quilt not found: {exc.kid}")
print("exercised: quilt_summaries.search / details / quilts.get / QuiltNotFound")
Full-text search across the Quilt Index database. Matches keywords against quilt titles, patterns, makers, locations, materials, techniques, and descriptions. Returns paginated results (60 per page) with summary information for each quilt. Results can be sorted by maker name, pattern name, or date.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number for paginated results (60 results per page). |
| sort_by | string | Sort order for results. Omitting returns relevance-based ordering. |
| keywordsrequired | string | Search terms to match against quilt records. Matches titles, patterns, makers, locations, materials, techniques, and descriptions. |
{
"type": "object",
"fields": {
"page": "integer",
"count": "integer",
"quilts": "array of quilt summary objects with kid, title, pattern, maker, date, location, dimensions, fabrics, construction, quilting_techniques, project, institution, inscription"
},
"sample": {
"data": {
"page": 1,
"count": 60,
"quilts": [
{
"kid": "38-36-3620",
"date": "2000-2025",
"maker": "BENNETT, INA",
"title": "Centennial Fiesta",
"fabrics": [
"Novelty",
"Print"
],
"pattern": "CENTENNIAL FIESTA",
"project": "Arizona Quilt Documentation Project; Arizona Centennial Quilt Project 100 Years - 100 Quilts; America Quilts 250! History Project",
"location": "Tucson, Arizona",
"dimensions": "58.5 inches x 71.5 inches",
"inscription": null,
"institution": [
"Arizona Quilt Documentation Project"
],
"construction": [
"Machine Piecing"
],
"quilting_techniques": [
"Machine quilting"
]
}
]
},
"status": "success"
}
}About the Quilt Index API
Search and Discovery
The search_quilts endpoint accepts a keywords string and matches it across quilt titles, pattern names, maker names, geographic locations, materials, techniques, and descriptions. Results come back 60 per page; use the page integer parameter to paginate. The optional sort_by parameter controls ordering — omitting it returns relevance-ranked results. Each result in the quilts array includes summary fields: kid, title, pattern, maker, date, location, dimensions, fabrics, and construction.
Full Record Retrieval
The get_quilt endpoint takes a kid string in the format 19-15-5793 (obtained from search results) and returns the complete record. Structured top-level fields include maker, date, date_begun, title, subject, materials, condition, ownership, and all_fields — an object containing every raw field-value pair the contributing institution submitted. This means records from different institutions may carry different supplemental fields accessible through all_fields.
Data Coverage and Scope
All records originate from contributing institutions — museums, quilt guilds, and historical societies — meaning field completeness varies by record. Some quilts will have detailed provenance and inscription data; others may have only a title, date, and maker. The condition and ownership fields reflect information as submitted by the contributing institution and may not reflect current state.
The Quilt Index API is a managed, monitored endpoint for quiltindex.org — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when quiltindex.org 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 quiltindex.org 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 quilt pattern research tool that searches by pattern name and displays maker history and dates
- Aggregate regional quilt-making traditions by searching location fields and grouping results by geography
- Cross-reference contributing institutions to map which museums and guilds hold the most documented quilts
- Extract material and fabric data across thousands of records to analyze historical textile usage trends
- Retrieve inscriptions and provenance fields from
get_quiltfor genealogical or historical research workflows - Index quilt records by
date_begunto study the chronological distribution of documented American quilts
| 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 the Quilt Index have an official developer API?+
What does `get_quilt` return beyond the top-level fields?+
maker, date, materials, condition, and ownership, the response includes an all_fields object containing every raw field-value pair from the original contributing institution's record. This captures supplemental data that varies by institution and does not map to a fixed schema.Can I filter `search_quilts` by date range, pattern type, or institution?+
keywords string and optional page and sort_by parameters. Structured filters by date range, pattern category, or contributing institution are not available. You can fork this API on Parse and revise it to add those filtering parameters.Are quilt images or photo URLs included in the responses?+
search_quilts nor get_quilt currently returns image URLs or photo assets. The API covers textual record fields — maker, materials, provenance, inscriptions, dimensions, and institution data. You can fork this API on Parse and revise it to add image URL extraction if that data is present in the source records.How complete are the records, and do all quilts have every field populated?+
condition, date_begun, subject, and ownership may be empty or partial for many records. The all_fields object in get_quilt reflects exactly what the submitting institution provided.