Discover/Gov API
live

Gov APIdvla.gov.gh ↗

Access Ghana DVLA fees, service prices, FAQs, news posts, and the nationwide office directory via 7 structured JSON endpoints.

Endpoint health
verified 1h ago
list_fees
list_news
list_services
get_news_post
list_news_categories
5/7 passing latest checkself-healing
Endpoints
7
Updated
2h ago

What is the Gov API?

The DVLA Ghana API exposes 7 endpoints covering the public data published by Ghana's Driver and Vehicle Licensing Authority at dvla.gov.gh: fee catalogues with tiered rate breakdowns, headline service prices, news and press releases with full HTML bodies, an FAQ listing, and a nationwide office directory. The list_fees endpoint alone returns per-row price amounts, category labels, and multi-tier rate details for every chargeable DVLA service.

This call costs3 credits / call— charged only on success
Try it
Rows per page, capped at 100.
Free-text filter; every word must appear in the fee title or description (case-insensitive). Omitted = no text filter.
Zero-based index into the filtered result set.
Restrict to one fee category. Omitted = all categories.
→ api.parse.bot/scraper/fc324241-f85d-4c8b-9d4f-23fd4a5fc598/<endpoint>
Ready to send
Fill in the parameters and hit sign in to send to see live response data here.
Call it over HTTPgrab a free API key at signup
curl -X GET 'https://api.parse.bot/scraper/fc324241-f85d-4c8b-9d4f-23fd4a5fc598/list_fees?limit=2&query=certificate+of+ownership&category=pvts-roadworthy' \
  -H 'X-API-Key: $PARSE_API_KEY'
Python SDK · recommended

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 dvla-gov-gh-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: DVLA Ghana SDK — fees, news, offices; every call capped."""
from parse_apis.dvla_gov_gh_api import DvlaGh, FeeCategory, PostNotFound

client = DvlaGh()

# Browse roadworthy fees with the category filter.
for fee in client.fees.list(category=FeeCategory.PVTS_ROADWORTHY, limit=3):
    print(fee.title, fee.price, f"({len(fee.rates)} rate tiers)")

# List recent news posts and drill into the first one by its id.
post = client.posts.list(limit=1).first()
if post is not None:
    detail = client.posts.get(id=post.id)
    print(detail.title, detail.author_name, detail.published_at)
    if detail.attachment is not None:
        print("  attachment:", detail.attachment.file_name, detail.attachment.file_size_bytes, "bytes")

# Point-lookup with error handling for a missing post.
try:
    client.posts.get(id=999999)
except PostNotFound as e:
    print("post not found:", e.message)

# Head office contact info from the office directory.
directory = client.office_directory.get()
if directory.head_office is not None:
    hq = directory.head_office
    print(hq.address, hq.phone, hq.weekday_hours)
for group in directory.office_groups[:3]:
    print(group.group, "-", group.active_stations, "stations")

print("exercised: fees.list / posts.list / posts.get / office_directory.get")
All endpoints · 7 totalmissing one? ·

Returns the DVLA fees-and-charges catalogue as shown on the site's Fees and Charges page: one row per chargeable service with its headline price and the full breakdown of rate tiers (for example Standard/Premium/Prestige for licensing and registration, or Testing/Roadworthy/Service Charge/Total for roadworthy items). Prices are Ghana cedis (GHS); each price is returned both as the site's display string and as a parsed number. official_rate is the price the site's official-rates feed publishes for a fee whose title matches exactly; it is null for the majority of rows, which the feed does not cover. Filtering by category and by free-text query is applied locally over the whole catalogue (every word of the query must appear in the title or description), and the result is paginated with limit/offset over the filtered set; total is the filtered count. Omitting limit returns 50 rows (capped at 100), omitting offset starts at 0. The whole catalogue is loaded on every call (three to five requests), so fetching all pages costs no more per page than the first.

Input
ParamTypeDescription
limitintegerRows per page, capped at 100.
querystringFree-text filter; every word must appear in the fee title or description (case-insensitive). Omitted = no text filter.
offsetintegerZero-based index into the filtered result set.
categorystringRestrict to one fee category. Omitted = all categories.
Response
{
  "type": "object",
  "fields": {
    "fees": "array of fee rows: id, title, description, category, price (display string), price_amount (number), currency, official_rate (display string or null), official_rate_amount (number or null), rates (array of {label, price, amount})",
    "limit": "page size applied",
    "total": "number of fee rows matching the filters",
    "offset": "offset applied",
    "has_more": "true when offset + returned rows is below total"
  },
  "sample": {
    "data": {
      "fees": [
        {
          "id": "pvts-motor-cyclesup-to-200cc-4",
          "price": "GHS 58.00",
          "rates": [
            {
              "label": "Vehicle Testing Fee",
              "price": "GHS 11.00",
              "amount": 11
            },
            {
              "label": "Roadworthy Fee",
              "price": "GHS 25.00",
              "amount": 25
            },
            {
              "label": "Service Charge",
              "price": "GHS 22.00",
              "amount": 22
            },
            {
              "label": "Total Fee",
              "price": "GHS 58.00",
              "amount": 58
            }
          ],
          "title": "Motor Cycles(Up to 200cc)",
          "category": "pvts-roadworthy",
          "currency": "GHS",
          "description": "Vehicle testing and roadworthy fee for Motor Cycles(Up to 200cc)",
          "price_amount": 58,
          "official_rate": null,
          "official_rate_amount": null
        }
      ],
      "limit": 3,
      "total": 37,
      "offset": 0,
      "has_more": true
    },
    "status": "success"
  }
}

About the Gov API

Fees, Charges, and Service Prices

The list_fees endpoint returns the full fees-and-charges catalogue, with each row carrying title, description, category, price (display string), price_amount (numeric), currency, and an official_rate breakdown that captures tier structures such as Standard/Premium/Prestige for licensing and registration, or Testing/Roadworthy/Service for vehicle inspection. Results are paginated via limit and offset parameters (capped at 100 rows per page), and a query string filters rows where every word matches the fee title or description. The complementary list_services endpoint returns a shorter curated list of headline service prices, each tagged with a category such as driver-licensing or vehicle-registration.

News, Press Releases, and Categories

list_news returns posts from the News & Updates section ordered newest-first. Each post includes content_html, content_text, featured_image_url, author_name, categories, published_at, views, and shares counters. Document-type posts also carry an attachment object with file_name, file_size_bytes, and url. The optional category parameter accepts a slug from list_news_categories, which returns the full news taxonomy (id, name, slug, optional description). A single post can be fetched by numeric id via get_news_post; an unknown id returns a stale_input error.

FAQs and Office Directory

list_faqs returns every published FAQ entry in one request — each with question, answer, category, topic, optional image_url, and updated_at. list_offices returns the full station directory grouped as Regional Offices, District Offices, Ultra Centers, Satellite Offices, and Special Initiatives. The response includes a head_office block (address, phone, toll_free, email, weekday_hours, weekend_hours) and an office_groups array where each group carries its active_stations count and an array of office name objects. The total_offices field sums all station names across groups.

Reliability & maintenanceVerified

The Gov API is a managed, monitored endpoint for dvla.gov.gh — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when dvla.gov.gh 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 dvla.gov.gh 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.

Last verified
1h ago
Latest check
5/7 endpoints passing
Maintenance
Monitored & self-healing
Will this API break when the source site changes?+
It's built not to. Every endpoint is health-checked on a schedule with automated test probes. When the source site changes and a check fails, the API is automatically queued for repair and re-verified — that's the self-healing layer. Each API page shows when its endpoints were last verified. And because marketplace APIs are shared, any fix reaches everyone using it.
Is this an official API from the source site?+
No — Parse APIs are independent, managed REST wrappers over publicly available data. That is the point: where a site has no official API (or only a limited one), Parse gives you a maintained, monitored endpoint for that data and keeps it working as the site changes — so you get a stable contract over a source that never promised one.
Can I fix or extend this API myself if I need a new endpoint or field?+
Yes — and you don't have to wait on us. This API was generated by the Parse agent, which stays attached. Describe the change in plain English ("add an endpoint that returns reviews", "fix the price field") in the revise box on the API page or via the revise_api MCP tool, and the agent rebuilds it against the live site in minutes. Contributing the change back to the public API is free.
What happens if I call an endpoint that has an issue?+
Errors are machine-readable: a bad call returns a clean status with the list of available endpoints and a repair hint, so an agent (or you) can recover or trigger a fix instead of failing silently. Confirmed failures feed the automatic repair queue.
Common use cases
  • Build a DVLA fee calculator that filters list_fees by category and displays tier breakdowns for licensing or vehicle registration.
  • Populate a driver's checklist app with official service prices from list_services, tagged by driver-licensing or vehicle-registration category.
  • Aggregate DVLA press releases and annual reports from list_news, filtering by category slug and parsing attachment fields for PDF downloads.
  • Index the full DVLA FAQ corpus from list_faqs into a search interface using the question, answer, and topic fields.
  • Render a nationwide DVLA office locator by consuming list_offices grouped data, distinguishing Regional, District, and Ultra Center types.
  • Monitor new DVLA notices by polling list_news with offset=0 and comparing the latest published_at timestamps.
  • Sync DVLA service pricing into a government-services comparison tool using price_amount numeric fields from list_fees and list_services.
Pricing & limitsSee full pricing →
TierPriceCredits/monthRate limit
Free$0/mo2005 req/min
Hobby$30/mo1,00020 req/min
Developer$100/mo5,000100 req/min
Team$300/mo20,000300 req/min
Company$1,000/mo100,000500 req/min

Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.

Frequently asked questions
Does DVLA Ghana have an official developer API?+
DVLA Ghana does not publish an official public developer API. The data at dvla.gov.gh is presented as web pages intended for public consumers rather than programmatic access. This Parse API provides that structured access.
How does the `list_fees` category filter work, and what categories are available?+
Pass a string to the category parameter to restrict results to one fee category. The available category values match those returned in the category field of existing fee rows — for example, categories covering licensing, registration, or vehicle inspection tiers. Omitting the parameter returns all categories. You can page through results with limit and offset, and apply a query string to match words in the fee title or description.
Does `list_offices` return full address details or contact numbers for individual branch offices?+
Currently each entry in office_groups[*].offices carries only the station name. Full address, phone, and hours details are returned only for the head_office block. The API covers all groupings (Regional, District, Ultra Centers, Satellite, Special Initiatives) and their active_stations counts. You can fork the API on Parse and revise it to add the missing per-branch contact fields.
Can I look up a vehicle's registration or licence status using this API?+
Not currently. The API covers public informational data: fee catalogues, service prices, news posts, FAQs, and the office directory. Individual vehicle or driver record lookups are not part of the published data. You can fork the API on Parse and revise it to add the missing endpoint if DVLA exposes that data publicly.
Are news posts from `list_news` always complete, and how should I handle document attachments?+
Each post in list_news includes content_html and content_text for the full body. For document-type posts such as annual reports or gazettes, the attachment field contains file_name, file_size_bytes, and a direct url to the file. Non-document posts return null for attachment. The total field in the response reflects the site's own count, so pagination via limit and offset may not always align with the site total if posts are added or removed between requests.
Page content last updated . Spec covers 7 endpoints from dvla.gov.gh.
Related APIs in Government PublicSee all →
list.am API
Search and browse vehicles, parts, and accessories listings on the Armenian List.am marketplace, filter by category, view detailed listing information, and retrieve seller contact numbers. Access comprehensive vehicle catalogs with category filtering to find exactly what you're looking for.
partsouq.com API
Access data from partsouq.com.
gasprices.aaa.com API
Access national, state, and metro-level gas prices from AAA in real time. Compare fuel costs across regions, view historical price trends, check EV charging rates, and browse the latest AAA fuel market news.
automobile.tn API
Access data from automobile.tn.
digitalsf.org API
Access data from digitalsf.org.
belastingdienst.nl API
Search and retrieve official Dutch tax information, forms, and guidance directly from the Netherlands Tax Authority to find answers about tax obligations, deductions, and compliance requirements. Access specific pages and documents from the Belastingdienst database to get accurate, up-to-date tax details relevant to your situation.
voi.com API
Find available Voi scooters and bikes near you, explore pricing and service details across different cities and countries, and access helpful resources like blog posts and support articles. Discover vehicle locations, compare pricing plans, and browse company updates all in one place.
data.fei.org API
Search and explore detailed information about international equestrian sports, including horses, riders, competition results, rankings, and show schedules from the FEI database. Look up specific athletes and horses, browse upcoming events by venue, and track performance across national federations.