Textures APItextures.com ↗
Access texture categories, keyword search, latest additions, free content, and full map metadata from Textures.com via a structured JSON API.
What is the Textures API?
The Textures.com API exposes 7 endpoints covering the full catalog of textures from Textures.com, including category hierarchies, keyword search, and per-texture detail records. The get_texture_detail endpoint returns map sections, available resolutions, credit costs, and license information for any photoSet ID. Use search_textures or browse_category to locate texture IDs, then fetch complete metadata for specific assets.
No input parameters required.
curl -X GET 'https://api.parse.bot/scraper/5e12160a-bf3e-46f9-875b-b5c53667c384/get_categories' \ -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 textures-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.textures_com_api import Textures, Category, Texture, TextureDetail
client = Textures()
# List all categories
for category in client.categories.list(limit=5):
print(category.name, category.id, category.photo_set_count)
# Browse a specific category by constructing it from its ID
road_category = client.category(id=115141)
for texture in road_category.browse(limit=3):
print(texture.name, texture.width, texture.height, texture.resolution)
# Search for wood textures
for texture in client.textures.search(query="wood", limit=5):
print(texture.name, texture.default_photo_set_id, texture.resolution)
# Get full details for a texture
detail = texture.details()
print(detail.title, detail.license_information)
for section in detail.sections:
print(section.section_title)
for photo in section.photos:
print(photo.photo_title)
for image in photo.images:
print(image.size, image.width, image.height, image.credit_cost.download_credits_needed)
# Get latest textures
for tex in client.textures.latest(limit=3):
print(tex.name, tex.resolution, tex.default_category_id)
# Get free content
for tex in client.textures.free(limit=3):
print(tex.name, tex.picture)
Returns the full category tree for the texture library including all top-level categories, their subcategories, photo set counts, and content groupings. The tree is hierarchical: each category may contain subcategory items organized by content type (3d_materials, 3d_assets, etc.). Use category IDs from this response to browse textures or fetch subcategory details.
No input parameters required.
{
"type": "object",
"fields": {
"categories": "array of top-level category objects with nested subcategories, photo set counts, and content groupings",
"lastUpdateDate": "ISO 8601 timestamp of last category tree update"
},
"sample": {
"data": {
"categories": [
{
"id": 115139,
"kind": "special",
"link": "/category/3d-decals/115139",
"name": "3D Decals",
"contents": [
{
"key": "3d_materials",
"items": [
{
"id": 115141,
"name": "Road",
"photoSetCount": 63
}
],
"title": "3D Materials"
}
],
"photoSetCount": 76,
"subCategoryCount": 2
}
],
"lastUpdateDate": "2026-02-24T12:42:31+01:00"
},
"status": "success"
}
}About the Textures API
Category and Browse Endpoints
The get_categories endpoint returns the full top-level category tree, including nested subcategories and a lastUpdateDate ISO 8601 timestamp. Pass any category_id from that response to get_subcategories to drill into child category listings and content groupings, with a subCategoryCount field indicating depth. Use leaf-level category IDs with browse_category to retrieve paginated texture listings; the response includes a meta object with category title metadata plus pagination fields (total_count, page_count, current_page, per_page).
Search and Discovery
search_textures accepts a required query string (e.g. "concrete", "wood grain") and an optional page integer. Each result includes texture id, name, pixel dimensions, picture URLs, and a defaultPhotoSet object with the id needed for detail lookups. get_latest_textures and get_free_content follow the same paginated response shape and require no query parameters beyond an optional page, making them suitable for catalog indexing or surfacing recently added or zero-cost assets.
Texture Detail and Map Metadata
get_texture_detail is the most field-rich endpoint. Provide a photo_set_id (obtainable from defaultPhotoSet.id in search or browse results) and the response includes the full title, a category object with id, name, kind, and rootCategoryId, a sections array describing each available map type (diffuse, normal, displacement, etc.) with per-photo size options and credit costs, and a licenseInformation string. This makes it straightforward to build asset pickers that surface exactly which maps and resolutions are available before a user commits to a download.
The Textures API is a managed, monitored endpoint for textures.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when textures.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 textures.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 texture browser UI that maps the full category hierarchy from
get_categoriesinto a navigable tree with subcategory counts. - Index the Textures.com catalog by polling
get_latest_textureson a schedule to detect new additions without full re-crawls. - Automate material library population by searching with
search_texturesand pulling map section data fromget_texture_detailfor matched assets. - Surface zero-cost assets in a free tier of a design tool by consuming
get_free_contentwith pagination. - Display per-resolution credit costs in a checkout flow by reading the
sectionsarray fromget_texture_detail. - Filter textures by category in a 3D scene authoring tool using
browse_categorywith leaf-level category IDs obtained fromget_subcategories. - Build a comparison tool showing available map types (diffuse, normal, displacement) and their sizes for a given photoSet ID.
| 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 Textures.com have an official developer API?+
What does `get_texture_detail` return that the search and browse endpoints don't?+
get_texture_detail returns the full sections array, which lists every available map type for a given photoSet along with individual photo sizes and their credit costs. It also returns the licenseInformation string and the full category object including rootCategoryId. Search and browse endpoints return a lighter defaultPhotoSet object suitable for listing pages but not for map-level detail.Can I retrieve user ratings, download counts, or community reviews for textures?+
How do I navigate from a top-level category to an actual list of textures?+
get_categories to obtain top-level category IDs, then pass a category_id to get_subcategories to find leaf-level IDs. Pass a leaf-level ID to browse_category to receive paginated texture listings. Using a non-leaf category ID with browse_category may return empty or sparse results since textures live at the deepest category level.Does the API expose the actual downloadable texture files or image binaries?+
sections array. Actual asset downloads are handled through the Textures.com platform itself. You can fork this API on Parse and revise it to construct or resolve download links if your use case requires them.