Terra Caribbean APIterracaribbean.com ↗
Access Terra Caribbean real estate listings, parish filters, amenities, mortgage estimates, and blog content across Barbados, Grenada, St. Lucia, and Trinidad & Tobago.
What is the Terra Caribbean API?
The Terra Caribbean API exposes 7 endpoints covering property listings, location metadata, and mortgage calculations across four Caribbean territories. Use search_properties to filter listings by parish, zoning, bedroom count, and amenities, then call get_property_details with a listing URL to retrieve the full description, photo gallery, reference number, and office contact. All four countries — Barbados, Grenada, Saint Lucia, and Trinidad & Tobago — are covered.
curl -X POST 'https://api.parse.bot/scraper/a3468f98-1cc1-4f7c-955d-0ef4ece21074/search_properties' \
-H 'X-API-Key: $PARSE_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"limit": "5",
"offset": "0",
"keyword": "land",
"beds_min": "2",
"baths_min": "1",
"price_max": "500000",
"price_min": "10000",
"country_code": "bb",
"listing_type": "sale"
}'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 terracaribbean-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.
"""Walkthrough: Terra Caribbean SDK — search Caribbean properties, drill into details, estimate mortgages."""
from parse_apis.terra_caribbean_api import (
TerraCaribbean, CountryCode, ListingType, Zoning, Country, PropertyNotFound
)
client = TerraCaribbean()
# List available locations
for loc in client.locations.list(limit=4):
print(loc.name, loc.id)
# Search residential properties for sale in Barbados
listing = client.propertysummaries.search(
country_code=CountryCode.BARBADOS,
listing_type=ListingType.SALE,
zoning=Zoning.RESIDENTIAL,
limit=1,
).first()
# Drill into full property details from the summary
if listing:
detail = listing.details()
print(detail.title, detail.price, detail.reference_number)
print(f"Photos: {len(detail.photos)}, Office: {detail.office_info.phone}")
# Calculate mortgage on a property
estimate = client.mortgageestimates.calculate(amount=200000, rate=5.5, years=20)
print(estimate.monthly_payment, estimate.total_payment, estimate.total_interest)
# Browse blog posts for Barbados using the Country enum
for post in client.blogposts.list(country=Country.BARBADOS, limit=3):
print(post.title, post.date)
# List amenities available for filtering
for amenity in client.amenities.list(limit=5):
print(amenity.name)
# Access parishes via location sub-resource
barbados = client.locations.list(limit=4).first()
if barbados:
for parish in barbados.parishes.list(limit=5):
print(parish.name)
# Typed error handling for missing property
try:
client.properties.get(url="https://terracaribbean.com/INVALID/barbados/residential-sale/land/nonexistent/")
except PropertyNotFound as exc:
print(f"Property not found: {exc.url}")
print("exercised: locations.list / propertysummaries.search / details / properties.get / mortgageestimates.calculate / blogposts.list / amenities.list / parishes.list")Full-text and filtered search across Caribbean property listings. Returns paginated summaries sorted by price ascending. Each result includes listing_id, price, location, and property attributes. Pagination is manual via offset; each page returns up to `limit` items. Note: combining regions and amenities filters in one call may cause upstream server errors due to a known site limitation; use them separately for reliable results.
| Param | Type | Description |
|---|---|---|
| limit | integer | Number of results per page. |
| offset | integer | Result offset for pagination. |
| zoning | string | Property category filter. |
| keyword | string | Free-text search against property titles and descriptions. |
| regions | string | Comma-separated list of parishes or regions to filter by (e.g. 'St. James,Christ Church'). Values from get_parishes endpoint. |
| beds_min | string | Minimum number of bedrooms. |
| amenities | string | Comma-separated list of amenities to filter by (e.g. 'Beachfront,Pool'). Values from get_amenities endpoint. |
| baths_min | string | Minimum number of bathrooms. |
| price_max | string | Maximum price in USD. |
| price_min | string | Minimum price in USD. |
| country_code | string | Country code for the search territory. |
| listing_type | string | Whether to search properties for sale or rent. |
{
"type": "object",
"fields": {
"limit": "integer, page size used",
"total": "integer, total number of matching listings",
"offset": "integer, offset used",
"listings": "array of property listing summary objects"
},
"sample": {
"data": {
"limit": 5,
"total": 502,
"offset": 0,
"listings": [
{
"url": "https://terracaribbean.com/BB41022/barbados/residential-sale/land/thorpes-land-113/",
"price": "USD $20,000",
"title": "Thorpes Land 113",
"region": "St. James",
"zoning": [
"Residential"
],
"address": "Thorpes Land, Haynesville",
"bedrooms": 0,
"bathrooms": 0,
"listing_id": "BB41022",
"description": "This 2,000 sq.ft. lot is located at Thorpes Land, St. James.",
"display_tag": "Under Offer",
"listing_type": "Sale",
"land_area_sqft": "2,043"
}
]
},
"status": "success"
}
}About the Terra Caribbean API
Property Search and Listing Detail
The search_properties endpoint accepts filters including zoning, keyword, regions (comma-separated parish names), beds_min, baths_min, and amenities. Results are paginated via limit and offset and sorted by price ascending. Each listing summary includes a listing_id, price, location, and key property attributes. To get the full record, pass the listing URL to get_property_details, which returns the title, formatted price (e.g. USD $20,000), description, photos array, reference_number (e.g. BB41022), and an office_info object containing a contact phone number.
Location Metadata and Filter Helpers
Three helper endpoints provide the valid values needed to drive search filters. get_locations returns the four supported territories with their id (country code), name, and slug. get_parishes accepts a country_code and returns the administrative regions for that country — these names feed directly into the regions parameter of search_properties. get_amenities returns the full list of amenity names (e.g. Beachfront, Pool) that can be passed as a comma-separated amenities filter.
Mortgage Calculator
calculate_mortgage takes a loan amount, annual interest rate (as a percentage), and term in years, then applies a standard amortization formula to return monthly_payment, total_payment, and total_interest. This is useful for building affordability tools alongside listing data without requiring a separate financial service.
Blog Content
get_blog_posts returns blog articles for a given location slug. Each post includes title, url, date, and an excerpt. Verified working slugs are barbados and grenada; other location slugs may not have associated blog categories.
The Terra Caribbean API is a managed, monitored endpoint for terracaribbean.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when terracaribbean.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 terracaribbean.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 Caribbean property search interface filtered by parish, bedrooms, and amenities using search_properties.
- Display full listing pages with photo galleries and office contact details via get_property_details.
- Generate mortgage affordability estimates alongside listing prices using calculate_mortgage.
- Populate dynamic dropdowns for region and amenity filters from get_parishes and get_amenities.
- Aggregate Terra Caribbean blog content for Barbados and Grenada real estate market coverage via get_blog_posts.
- Map all supported territories and their country codes using get_locations as a reference table.
- Compare properties across Barbados, Grenada, Saint Lucia, and Trinidad & Tobago in a single multi-market search.
| 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 Terra Caribbean offer an official developer API?+
What does search_properties return and how do I paginate through results?+
listings array of property summaries along with total, limit, and offset fields. Pagination is manual: increment offset by your limit value on each subsequent call. There is no cursor or next-page token.Are listing prices and photos available without fetching each listing individually?+
photos array and complete description are only available from get_property_details, which requires the listing URL returned in the search results.Does the blog endpoint work for Saint Lucia and Trinidad & Tobago?+
barbados and grenada. Saint Lucia and Trinidad & Tobago slugs may not have associated blog categories and are not confirmed to return results. You can fork this API on Parse and revise it to add dedicated endpoints for those locations if blog content becomes available.