Teachers Pay Teachers APIteacherspayteachers.com ↗
Access K-12 educational resources, seller profiles, reviews, and free materials from Teachers Pay Teachers via 7 structured API endpoints.
What is the Teachers Pay Teachers API?
This API exposes 7 endpoints covering Teachers Pay Teachers product listings, seller profiles, and user reviews. You can search and filter resources by keyword, grade level, subject, and resource type using search_resources and browse_resources, retrieve full product metadata including HTML descriptions, grade arrays, and pricing via get_resource_details, and pull structured review data with aggregate ratings from any product page.
curl -X GET 'https://api.parse.bot/scraper/6151111e-1bce-4923-8c22-633aa6470a15/search_resources?page=1&sort=relevance&query=math+worksheets' \ -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 teacherspayteachers-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.
from parse_apis.teachers_pay_teachers_api import TeachersPayTeachers, Sort, ResourceNotFound
tpt = TeachersPayTeachers()
# Search for math resources sorted by rating
for item in tpt.resources.search(query="math worksheets", sort=Sort.RATING, limit=5):
print(item.title, item.price)
# Get full details for a specific resource
resource = tpt.resources.get(product_id="2319927")
print(resource.name, resource.is_free, resource.evaluation_rating.score_average)
print(resource.author.name, resource.author.follower_count)
# Get reviews for that resource
review_result = resource.reviews()
print(review_result.aggregate_rating.rating_value, review_result.aggregate_rating.rating_count)
for review in review_result.reviews:
print(review.author.name, review.review_body)
# Browse free math resources
for free_item in tpt.resources.browse(subject="math", price_range="free", limit=3):
print(free_item.title, free_item.author)
# Explore a seller's profile and their store resources
seller = tpt.sellers.get(slug="little-achievers")
print(seller.name, seller.follower_count, seller.ratings.combined_ratings_score)
for store_item in seller.resources.list(limit=5):
print(store_item.title, store_item.price)
Full-text search over Teachers Pay Teachers educational resources by keyword. Returns paginated results with title, price, author, and thumbnail. Sort controls ordering; pagination via page number.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number for pagination |
| sort | string | Sort order for results |
| queryrequired | string | Search keyword or phrase |
{
"type": "object",
"fields": {
"url": "string - the full search URL used",
"page": "string - current page number",
"query": "string - the search query used",
"results": "array of resource listing objects with id, title, url, price, author, author_url, rating, review_count, thumbnail"
},
"sample": {
"data": {
"url": "https://www.teacherspayteachers.com/browse?search=math+worksheets&page=1&sort=relevance",
"page": "1",
"query": "math worksheets",
"results": [
{
"id": "1024082",
"url": "https://www.teacherspayteachers.com/Product/Winter-Math-Worksheets-1024082",
"price": "$3.00",
"title": "Winter Math Worksheets for Kindergarten",
"author": "Lavinia Pop",
"rating": null,
"thumbnail": "https://ecdn.teacherspayteachers.com/thumbitem/original-1024082-1.jpg",
"author_url": "https://www.teacherspayteachers.com/store/lavinia-pop",
"review_count": null
}
]
},
"status": "success"
}
}About the Teachers Pay Teachers API
Search and Browse Endpoints
The search_resources endpoint accepts a required query string plus optional page and sort parameters, returning arrays of product objects that include id, title, url, price, author, author_url, rating, review_count, and thumbnail. The browse_resources endpoint offers more granular filtering through subject (e.g. math, science), grade (e.g. kindergarten, 1st-grade), resource_type (e.g. worksheets, task-cards), and price_range (e.g. free, under-5, 5-10) parameters — useful when you want category-level results rather than keyword-driven ones. Both endpoints paginate via the page integer parameter.
Product Detail and Review Endpoints
get_resource_details takes a numeric product_id and returns a richer object: the name, description (HTML), images array with large-image URLs, prices object (including isFree boolean and nonTransferableLicense pricing), usGrades, subjects, types, and an evaluationRating object with count and scoreAverage. get_resource_reviews returns a structured reviews array — each item includes author, datePublished, reviewBody, and reviewRating — alongside an aggregate_rating object with ratingValue, ratingCount, reviewCount, bestRating, and worstRating.
Seller and Free Resource Endpoints
get_seller_profile accepts a store slug (e.g. little-achievers) and returns seller-level fields: bio, icon URL, name, slug, state, country, ratings (with ratingsCount and combinedRatingsScore), experience, and followerCount. get_seller_resources paginates through that seller's full product catalog using the same slug plus optional page. Finally, get_free_resources returns a paginated feed of zero-cost listings in the same product-array format shared across all listing endpoints.
Data Consistency
All listing endpoints — search, browse, seller store, and free resources — return product objects with a consistent set of fields: id, title, url, price, author, author_url, rating, review_count, and thumbnail. This makes it straightforward to normalize results from different listing sources into a single schema without conditional field handling.
The Teachers Pay Teachers API is a managed, monitored endpoint for teacherspayteachers.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when teacherspayteachers.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 teacherspayteachers.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?+
- Aggregate free K-12 worksheets by grade level using browse_resources with price_range=free and grade filters.
- Monitor a specific seller's catalog changes over time by paginating get_seller_resources by slug.
- Build a resource recommendation engine using subject, grade, and rating fields from search_resources.
- Analyze review sentiment trends by pulling reviewBody text from get_resource_reviews across multiple product IDs.
- Compare seller reputation metrics by pulling followerCount and combinedRatingsScore from get_seller_profile.
- Identify top-rated science resources for a specific grade by combining browse_resources subject and grade filters with evaluationRating data from get_resource_details.
- Track pricing across resource categories by collecting the nonTransferableLicense price field from get_resource_details at regular intervals.
| 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 Teachers Pay Teachers have an official public developer API?+
What does get_resource_details return beyond what search results include?+
description, a structured images array with large-format URLs, a prices object with an isFree boolean and nonTransferableLicense pricing, usGrades and subjects arrays, types, and an evaluationRating object with count and scoreAverage. Listing endpoints like search_resources return only summary fields such as thumbnail, price, rating, and review_count.Can I filter search results by grade level or resource type in search_resources?+
query, page, and sort — it does not expose grade, subject, or resource_type filters. Those filters are available in browse_resources, which supports grade, subject, resource_type, and price_range parameters. You can combine a keyword search workflow with browse filters by using browse_resources with a subject or grade context instead.