Mercado de Cavalos APImercadodecavalos.com.br ↗
Access horse listings, stallion coverings, embryos, featured animals, seller contacts, and news from Mercado de Cavalos via a structured JSON API.
What is the Mercado de Cavalos API?
This API exposes 8 endpoints covering Brazil's primary horse trading marketplace, mercadodecavalos.com.br. You can search active for-sale listings by breed, price, age, and sex using search_horses_for_sale, retrieve full listing profiles via get_horse_details — including pedigree, photos, and seller location — and fetch seller phone and WhatsApp numbers through get_contact_info. Stallion coverings, embryo offerings, and editorial news articles are also accessible.
curl -X GET 'https://api.parse.bot/scraper/e7c3184a-65f6-46b6-be86-6d5c467d2bd1/search_horses_for_sale?page=1&sort_order=1&male=1&breed=16&female=1&max_age=20&min_age=0&max_price=100000.00&min_price=1000.00&coat_color=0&homozygous=1®istered=1&with_video=1' \ -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 mercadodecavalos-com-br-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: Mercado de Cavalos SDK — browse Brazil's horse marketplace."""
from parse_apis.mercado_de_cavalos_api import MercadoDeCavalos, Sort, ListingNotFound
client = MercadoDeCavalos()
# Search for horses sorted by newest, capped at 5 results
for horse in client.horsesummaries.search(sort_order=Sort.NEWEST, limit=5):
print(horse.name, horse.price, horse.breed)
# Drill into the first result for full details and seller contact
listing = client.horsesummaries.search(sort_order=Sort.NEWEST, limit=1).first()
if listing:
detail = listing.details()
print(detail.name, detail.price, detail.location, detail.seller)
print("Photos:", len(detail.photos))
print("Pedigree paternal:", detail.pedigree.paterna)
# Get seller contact info
contact = listing.contact()
print("Contacts:", contact.contacts)
# Browse stallions available for breeding
for stallion in client.stallions.list(limit=3):
print(stallion.name, stallion.breed, stallion.price)
# Read news articles and drill into full content
article_summary = client.articlesummaries.list(limit=1).first()
if article_summary:
full = article_summary.full_article()
print(full.title, full.content[:100])
# Typed error handling for a missing listing
try:
bad = client.contacts.get(ref_id="99999999")
print(bad.ref_id, bad.contacts)
except ListingNotFound as exc:
print(f"Listing not found: {exc.ref_id}")
print("exercised: horsesummaries.search / details / contact / stallions.list / articlesummaries.list / full_article / contacts.get")
Search for horses listed for sale on the marketplace. Supports filtering by breed, gender, age range, price range, coat color, registration status, and video availability. Results are paginated (24 per page) and sortable by date or price. Returns summary listings with name, price, breed, age, gender, and identifiers for drilling into full details.
| Param | Type | Description |
|---|---|---|
| male | string | Filter for males only. Set to '1' to include. |
| page | integer | Page number for pagination. |
| breed | string | Breed filter as numeric ID from site catalog. Known IDs: 6=Appaloosa, 7=Árabe, 9=Crioulo, 10=Quarto de Milha, 11=Paint Horse, 12=Lusitano, 16=Mangalarga Marchador, 17=Mangalarga, 21=Campolina, 24=Sem Raça Definida. |
| female | string | Filter for females only. Set to '1' to include. |
| max_age | string | Maximum age filter as integer string (e.g. '10' for 10 years, '0' for up to 30 years). |
| min_age | string | Minimum age filter as integer string (e.g. '2' for 2 years, '0' for newborn). |
| max_price | string | Maximum price filter as decimal string (e.g. '50000.00'). |
| min_price | string | Minimum price filter as decimal string (e.g. '5000.00'). |
| coat_color | string | Coat color filter as numeric ID from site catalog (e.g. '1'=Alazã, '0'=all). |
| homozygous | string | Filter for homozygous horses. Set to '1' to include. |
| registered | string | Filter for registered horses. Set to '1' to include. |
| sort_order | string | Sort order for results. |
| with_video | string | Filter for listings with video. Set to '1' to include. |
{
"type": "object",
"fields": {
"page": "current page number",
"items": "array of horse listing summary objects with name, price, breed, age, gender, url, ref_id, slug",
"total_pages": "total number of pages available"
},
"sample": {
"data": {
"page": 1,
"items": [
{
"age": "13 ano(s)",
"url": "https://mercadodecavalos.com.br/31755/garanhao-verso-anaya",
"name": "Garanhão Verso Anayá",
"slug": "garanhao-verso-anaya",
"breed": "Mangalarga Marchador",
"price": "R$ 20.000,00",
"gender": "Macho",
"ref_id": "31755"
}
],
"total_pages": 1
},
"status": "success"
}
}About the Mercado de Cavalos API
Horse Listing Search and Detail
search_horses_for_sale accepts filters for male, female, min_age, max_age, max_price, breed (numeric catalog ID — e.g. 9 for Crioulo, 10 for Quarto de Milha), and page. Note that the state filter is currently broken upstream and returns an HTTP 500 error; do not pass it. Each result object in the data array links to a listing via a ref_id and slug pair. Pass both to get_horse_details to retrieve the full record: name, price, seller, location, description, pedigree/lineage, and photos array.
Breeding and Genetic Listings
list_stallions_and_coverings returns paginated stallion records for breeders seeking coverage options. list_embryos_and_mares covers embryo and mare offerings; this endpoint may return an empty array when no listings are currently active on the source site, so callers should handle zero-result responses gracefully. Both endpoints accept a page parameter.
Featured Animals, Contact Info, and News
get_featured_animals returns the homepage spotlight animals — useful for tracking promoted listings over time. get_contact_info takes a ref_id from any listing and returns a contacts array containing the seller's phone and WhatsApp numbers. The list_news_articles endpoint paginates the site's editorial section ('Fique por Dentro'), returning article title, date, and url per item. Full article body, title, date, and URL are available via get_news_article using the ref_id and slug extracted from a news article URL.
The Mercado de Cavalos API is a managed, monitored endpoint for mercadodecavalos.com.br — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when mercadodecavalos.com.br 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 mercadodecavalos.com.br 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 price-tracking dashboard for Quarto de Milha and Crioulo horses using breed IDs in
search_horses_for_sale. - Aggregate seller contact details across multiple listings with
get_contact_infoto build a breeder directory. - Monitor homepage featured animals via
get_featured_animalsto detect listing promotion patterns. - Compile pedigree and lineage data from
get_horse_detailsfor bloodline research tools. - Track stallion availability for breeding season planning using
list_stallions_and_coverings. - Ingest news content from
list_news_articlesandget_news_articleinto a Brazilian equestrian industry feed. - Compare listing prices by age bracket using
min_age,max_age, andmax_pricefilters in bulk search jobs.
| 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 Mercado de Cavalos offer an official developer API?+
How does the breed filter work in `search_horses_for_sale`?+
breed parameter accepts a numeric ID from the site's internal catalog. Documented values include 6 (Appaloosa), 7 (Árabe), 9 (Crioulo), and 10 (Quarto de Milha). Other breeds likely have IDs but are not currently enumerated in the endpoint spec.Can I filter horse listings by Brazilian state?+
state parameter is documented (e.g. 'SP', 'MG', 'RS') but is currently broken upstream — passing it causes an HTTP 500 error from the source. Omit it from requests. Regional filtering is not reliably available at this time. You can fork the API on Parse and revise it to re-enable the state filter once the upstream issue is resolved.Does the API cover auction listings or sold/expired horses?+
What data does `get_horse_details` return beyond the search listing summary?+
search_horses_for_sale result objects.