Ukanimalcrueltyfiles APIukanimalcrueltyfiles.org ↗
Access UK animal cruelty prosecution case data via 4 endpoints. Search cases, retrieve full conviction details, and filter by category or tag.
What is the Ukanimalcrueltyfiles API?
The ukanimalcrueltyfiles.org API provides structured access to UK animal cruelty prosecution records across 4 endpoints. Use search_posts to run full-text queries against case titles and content, retrieve complete conviction narratives and sentencing details via get_post, and browse classification taxonomy through list_categories and list_tags. Each case record exposes fields including title, date, excerpt, full content, slug, and associated tag and category IDs.
curl -X GET 'https://api.parse.bot/scraper/c9d47a55-44fc-43a4-9784-f29f1e7c799b/search_posts?page=1&query=dog&per_page=5' \ -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 ukanimalcrueltyfiles-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: UK Animal Cruelty Files SDK — bounded, re-runnable."""
from parse_apis.ukanimalcrueltyfiles_org_api import UKAnimalCrueltyFiles, PostNotFound
client = UKAnimalCrueltyFiles()
# List categories to understand the case taxonomy.
for cat in client.categories.list(limit=5):
print(cat.name, f"({cat.count} cases)")
# Search prosecution cases by keyword.
for case in client.posts.search(query="dog fighting", limit=3):
print(case.title, case.date)
# Drill into a single case for full details.
summary = client.posts.search(query="starvation", limit=1).first()
if summary:
detail = summary.details()
print(detail.title, detail.content[:200])
# Typed error handling on a direct lookup.
try:
post = client.posts.get(post_id="999999999")
print(post.title)
except PostNotFound as exc:
print(f"Case not found: {exc}")
# Filter tags by search term.
for tag in client.tags.list(search="ban", limit=5):
print(tag.name, tag.count)
print("exercised: categories.list / posts.search / details / posts.get / tags.list")
Search animal cruelty prosecution cases. Supports full-text search, category filtering, and tag filtering. Results are paginated with total counts. Each result includes the case title, date, excerpt, and linked category/tag IDs.
| Param | Type | Description |
|---|---|---|
| tag | string | Tag ID to filter by. Obtain IDs from the list_tags endpoint. |
| page | integer | Page number for pagination. |
| query | string | Free-text search query matching case titles and content. |
| category | string | Category ID to filter by. Obtain IDs from the list_categories endpoint. |
| per_page | integer | Number of results per page, between 1 and 100. |
{
"type": "object",
"fields": {
"page": "integer",
"posts": "array of prosecution case summaries",
"total": "integer",
"per_page": "integer",
"total_pages": "integer"
},
"sample": {
"page": 1,
"posts": [
{
"id": 49915,
"date": "2026-06-27T21:20:07",
"link": "https://ukanimalcrueltyfiles.org/pontrhydyrun-torfaen-louise-price/",
"slug": "pontrhydyrun-torfaen-louise-price",
"tags": [
1277,
132,
123
],
"title": "Pontrhydyrun, Torfaen: Louise Price",
"author": 1,
"excerpt": "CONVICTED (2026) | Louise Ann Price...",
"categories": [
1171,
9,
2
]
}
],
"total": 3073,
"per_page": 3,
"total_pages": 1025
}
}About the Ukanimalcrueltyfiles API
Case Search and Retrieval
The search_posts endpoint accepts a free-text query parameter that matches against case titles and content, and supports filtering by category or tag ID. Results are paginated — use page and per_page (1–100) to control output volume. Each result in the posts array includes the case title, publication date, excerpt, and linked category and tag IDs. The response also returns total, total_pages, and per_page for building pagination logic.
For full case details, pass a numeric post_id to get_post. The response includes the complete content field containing the conviction narrative, sentencing outcome, and case background, along with date, modified, slug, link, excerpt, author, and the full array of tags IDs associated with that record.
Taxonomy Endpoints
list_categories returns all available prosecution case categories with their IDs, names, slugs, post counts, and parent category relationships. This lets you map category IDs found in search results back to human-readable names, and discover the full category hierarchy for structured filtering.
list_tags lists the tags used to classify cases, which include ban lengths (e.g. lifetime bans), year identifiers, geographic locations, and case characteristics. The search parameter on list_tags supports partial name matching, making it straightforward to find the numeric tag ID for a specific location or ban type before passing it to search_posts.
The Ukanimalcrueltyfiles API is a managed, monitored endpoint for ukanimalcrueltyfiles.org — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when ukanimalcrueltyfiles.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 ukanimalcrueltyfiles.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?+
- Building a searchable public database of UK animal cruelty convictions filtered by offence category
- Tracking sentencing trends over time using the
dateandcontentfields from case records - Mapping conviction geography by filtering cases with location-based tags from
list_tags - Aggregating cases by ban length using ban-related tags to analyse disqualification patterns
- Generating case digests by extracting
excerptandtitlefields from paginatedsearch_postsresults - Cross-referencing conviction records by year using year-identifier tags available via
list_tags - Monitoring new case publications by querying
search_postswith date-ordered pagination
| 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 ukanimalcrueltyfiles.org have an official developer API?+
What does `get_post` return beyond the case summary?+
content field containing the complete case narrative — conviction details, sentencing, and background text — along with date, modified, slug, link, excerpt, author (integer ID), and the complete array of associated tags IDs. The search_posts endpoint returns only the excerpt and basic metadata.How do tag and category IDs work across endpoints?+
search_posts and get_post responses return category and tag values as numeric IDs. Use list_categories and list_tags to resolve those IDs to human-readable names and slugs. The list_tags endpoint also accepts a search parameter for partial name matching, which helps locate a specific tag ID before filtering.Does the API expose defendant personal details such as addresses or dates of birth?+
content field from get_post contains the full case narrative as published, which may include names referenced in the source record. You can fork this API on Parse and revise it to add a dedicated structured defendant fields endpoint if the source data supports it.Is there a way to retrieve cases sorted by sentencing severity or ban length?+
search_posts endpoint supports filtering by tag ID, and ban-length tags are available via list_tags, so you can filter to cases with specific ban durations. Sorting by severity across all results is not currently supported. You can fork this API on Parse and revise it to add a severity-sort parameter if the underlying data structure allows it.