Org APIpensions-ombudsman.org.uk ↗
Access UK Pensions Ombudsman decisions, news, FAQs, and publications via API. Search by keyword, outcome, topic, or date. 10 endpoints, structured JSON.
What is the Org API?
The Pensions Ombudsman API provides structured access to the UK Pensions Ombudsman website across 10 endpoints, covering decisions, news, FAQs, and publications. Use search_decisions to query the full decisions database by keyword, outcome, complaint topic, or date order, and retrieve per-case details including complainant, respondent, determination text, and PDF link via get_decision_detail. Static informational pages — complaints guidance, about us — are also accessible as structured text.
curl -X GET 'https://api.parse.bot/scraper/ea1bf717-2a7b-480b-9319-2f1016cf587e/search_decisions?keys=ill+health&page=0&sort=field_decision_date_value_DESC' \ -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 pensions-ombudsman-org-uk-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: Pensions Ombudsman SDK — search decisions, read news, browse FAQs."""
from parse_apis.pensions_ombudsman_api import PensionsOmbudsman, Sort, ResourceNotFound
client = PensionsOmbudsman()
# Search recent ill-health decisions, sorted newest first.
for decision in client.decisionsummaries.search(keys="ill health", sort=Sort.DATE_DESC, limit=3):
print(decision.title, decision.outcome, decision.date)
# Drill into the first decision for full determination text.
first = client.decisionsummaries.search(keys="pension", limit=1).first()
if first:
detail = first.details()
print(detail.title, detail.type, detail.determination_text[:120])
# Browse latest news articles and read one in full.
article_summary = client.newsarticlesummaries.list(limit=1).first()
if article_summary:
full_article = article_summary.details()
print(full_article.title, full_article.date, full_article.body[:100])
# Search FAQs about complaints.
for faq in client.faqs.search(keys="complaint", limit=3):
print(faq.question, faq.answer[:80])
# Typed error handling on a decision detail fetch.
try:
bad_summary = client.decisionsummaries.search(keys="nonexistent case xyz", limit=1).first()
if bad_summary:
bad_summary.details()
except ResourceNotFound as exc:
print(f"Decision not found: {exc.url}")
# Static page: complaint guidance.
info = client.pages.get_complaint_info()
print(info.title, info.url)
print("exercised: decisionsummaries.search / details / newsarticlesummaries.list / details / faqs.search / pages.get_complaint_info")
Search and list previous decisions from the Pensions Ombudsman. Returns paginated results with decision metadata including title, URL, complainant, respondent, outcome, complaint topic, reference, and date. Supports keyword search, sorting, and filtering by outcome, topic, or type. Paginates via a 0-based page counter; each page returns up to 12 decisions ordered by decision date.
| Param | Type | Description |
|---|---|---|
| keys | string | Search keyword to filter decisions. |
| page | integer | Page number (0-based). |
| sort | string | Sort order for results. |
| topic | string | Complaint topic filter as comma-separated numeric IDs from the site's taxonomy. |
| outcome | string | Outcome filter as comma-separated numeric IDs from the site's taxonomy. |
| type_id | string | Decision type filter as comma-separated numeric IDs from the site's taxonomy. |
{
"type": "object",
"fields": {
"page": "integer, current page number",
"decisions": "array of decision summary objects with title, url, complainant, respondent, outcome, complaint_topic, ref, and date"
}
}About the Org API
Decisions Database
The search_decisions endpoint accepts keyword search via keys, paginated results via zero-based page, and sort via sort (ascending or descending by decision date). Taxonomy-based filters topic, outcome, and type_id accept comma-separated numeric IDs drawn from the site's own taxonomy. Each result in the decisions array includes title, url, complainant, respondent, outcome, complaint_topic, ref, and date. Pass any returned url to get_decision_detail for the full record, which adds determination_text and pdf_url when a PDF is available.
News, FAQs, and Publications
get_news_listing returns paginated news articles and press releases with title, url, date, and summary. Individual articles fetched via get_news_article return the full body text alongside date and title. get_faqs supports an optional keys keyword filter and returns question/answer pairs. get_publications lists governance documents, factsheets, expenditure reports, and leaflets, each with title, url, date, type, and summary.
Site-Wide Search and Static Pages
search_site runs a global keyword search across all site content and returns title, url, and snippet per result — useful for surfacing relevant decisions or guidance without knowing which section to search. Three static-page endpoints — get_making_a_complaint_info, get_being_complained_about_info, and get_about_us — each return title, url, and full body text, making it straightforward to pull procedural guidance into external tools without maintaining separate content copies.
Taxonomy Filters
The topic, outcome, and type_id parameters in search_decisions use numeric IDs from the Pensions Ombudsman's internal taxonomy. These IDs are not fully enumerated in the API spec, so developers typically run initial searches without filters to discover representative outcome and topic strings from results, then use search_site or inspect listing data to map strings to usable IDs.
The Org API is a managed, monitored endpoint for pensions-ombudsman.org.uk — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when pensions-ombudsman.org.uk 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 pensions-ombudsman.org.uk 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 archive of UK pension dispute decisions filtered by complaint topic or outcome for legal research
- Monitoring new Pensions Ombudsman decisions by polling
search_decisionssorted by date descending - Extracting full determination text via
get_decision_detailfor NLP classification of decision reasoning and outcomes - Aggregating Pensions Ombudsman news and press releases into a compliance alert feed using
get_news_listing - Embedding complaints procedure guidance from
get_making_a_complaint_infointo a pension member support portal - Analysing publication metadata from
get_publicationsto track governance document releases over time - Surfacing relevant FAQ answers from
get_faqsin a pension scheme member chatbot or helpdesk tool
| 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 Pensions Ombudsman provide an official developer API?+
How do the outcome and topic filters work in `search_decisions`?+
outcome, topic, and type_id parameters accept comma-separated numeric IDs from the Pensions Ombudsman's taxonomy. The full list of valid IDs is not pre-enumerated in the API. You can discover applicable values by inspecting outcome and complaint_topic strings returned in unfiltered search_decisions results, then map those strings to IDs through trial or by cross-referencing the site's filter UI.Is the full determination text available for every decision?+
get_decision_detail returns determination_text and pdf_url where the decision page includes them. Some older or early-stage decisions may have limited text or no associated PDF. The pdf_url field will be absent or empty in those cases.Can I filter decisions by the pension scheme name or pension provider?+
keys parameter in search_decisions can surface decisions where the scheme or provider name appears in the title or metadata. For structured filtering by respondent, you would need to retrieve and process result sets programmatically. You can fork this API on Parse and revise it to add a dedicated respondent-filter endpoint if that field is exposed in an accessible form.Does the API cover Pensions Ombudsman Early Resolution Service (ERS) cases separately?+
type_id filter in search_decisions may allow filtering by decision type if ERS decisions are assigned a distinct taxonomy ID, but this is not enumerated in the current spec. You can fork this API on Parse and revise it to add explicit ERS filtering once the relevant taxonomy IDs are mapped.