Roam Africa APIapp.roamafrica.co.za ↗
Access Roam Africa travel data via API: destination countries, visa guides, full guide content, and travel packages with pricing and itineraries.
What is the Roam Africa API?
The Roam Africa API gives developers access to African travel data across 4 endpoints, covering destination countries, travel and visa guide blog posts, full guide content in Markdown, and country-filtered travel packages. The get_travel_guide endpoint returns visa requirements, fees, and step-by-step instructions for a given guide slug, while list_packages_by_country exposes pricing, duration, and inclusions for curated itineraries by destination.
No input parameters required.
curl -X GET 'https://api.parse.bot/scraper/36dbbd2c-4281-4778-b6f4-e5513399d9f3/list_destinations' \ -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 app-roamafrica-co-za-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: Roam Africa SDK — bounded, re-runnable; every call capped."""
from parse_apis.app_roamafrica_co_za_api import RoamAfrica, GuideNotFound
client = RoamAfrica()
# List all destination countries with tour/package counts.
for dest in client.destinations.list(limit=3):
print(dest.country, dest.tour_count, dest.package_count)
# Find visa-related travel guides by filtering on the 'visa' tag.
guide_summary = client.travel_guide_summaries.list(tag="visa", limit=1).first()
if guide_summary:
print(guide_summary.title, guide_summary.slug)
# Get the full guide content (visa requirements, fees, steps).
try:
full_guide = guide_summary.details()
print(full_guide.title, full_guide.reading_time)
except GuideNotFound as e:
print("guide gone:", e.slug)
# Browse packages for a specific destination country.
tanzania = client.destination("Tanzania")
for pkg in tanzania.packages.list(limit=3):
print(pkg.name, pkg.price, pkg.currency)
print("exercised: destinations.list / travel_guide_summaries.list / details / destination.packages.list")
Lists all destination countries available on the Roam Africa platform, with counts of tours and packages per country. Results come from both tours and travel packages.
No input parameters required.
{
"type": "object",
"fields": {
"total": "integer total number of destinations",
"destinations": "array of destination objects with country name and listing counts"
},
"sample": {
"data": {
"total": 12,
"destinations": [
{
"country": "Botswana",
"tour_count": 0,
"package_count": 3
},
{
"country": "Kenya",
"tour_count": 0,
"package_count": 1
},
{
"country": "South Africa",
"tour_count": 9,
"package_count": 4
},
{
"country": "Tanzania",
"tour_count": 0,
"package_count": 9
}
]
},
"status": "success"
}
}About the Roam Africa API
Destinations and Packages
list_destinations returns the full set of countries available on the Roam Africa platform, including a count of tours and travel packages associated with each country. This is the entry point for discovering what coverage exists. list_packages_by_country takes a case-insensitive country string and returns an array of package objects with pricing, duration, inclusions, exclusions, and highlights. Country names to use as input can be sourced directly from the destinations array returned by list_destinations.
Travel and Visa Guides
list_travel_guides returns summaries of travel guide blog posts — title, slug, category, tags, excerpt, and metadata — and accepts an optional tag filter. Passing tag=visa narrows results to visa-focused guides; tag=travel documents returns document-related content. The total field reflects the count of matched guides. get_travel_guide takes a slug from those summaries and returns the full guide, including content in Markdown format, author, published_at as an ISO 8601 timestamp, reading_time in minutes, and seo_title.
Response Shape and Coverage
All endpoints return structured JSON. Guide content arrives pre-formatted in Markdown, making it straightforward to render in documentation tools, travel apps, or chatbot knowledge bases. Package data includes inclusions and exclusions as discrete fields rather than free text, so filtering and comparison are practical. Coverage is limited to African destinations listed on the Roam Africa platform; the dataset does not include flights, hotels, or user reviews.
The Roam Africa API is a managed, monitored endpoint for app.roamafrica.co.za — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when app.roamafrica.co.za 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 app.roamafrica.co.za 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 visa requirements lookup tool using
get_travel_guidefiltered by the 'visa' tag - Populate a destination explorer with country names and listing counts from
list_destinations - Display curated itineraries and pricing for a specific African country via
list_packages_by_country - Index Roam Africa travel guides into a search engine using
list_travel_guidesslugs and excerpts - Feed a travel chatbot with structured visa fee and step-by-step instructions from guide
contentfields - Compare package durations and inclusions across multiple countries for a trip-planning interface
- Track new guide publications by monitoring the
published_attimestamps returned bylist_travel_guides
| 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 Roam Africa have an official developer API?+
What does `get_travel_guide` return beyond the article text?+
get_travel_guide returns the full content field in Markdown format along with structured metadata: author, published_at (ISO 8601), reading_time in minutes, seo_title, excerpt, category, tags, and the slug identifier. Visa guides specifically tend to include fee schedules and application steps within the Markdown content.Can I filter travel guides by multiple tags at once?+
tag parameter on list_travel_guides accepts a single string value per request. Filtering by multiple tags simultaneously is not currently supported. You can fork this API on Parse and revise it to add multi-tag filtering logic.Does the API return flight or hotel booking data?+
How fresh is the travel guide and package data?+
published_at field returned by get_travel_guide, so you can detect when content was last published. Package data and destination counts reflect what is currently listed on the Roam Africa platform at the time of the request; there is no historical or archived snapshot endpoint.