Rover API endpoint
Searches Rover's public dog trainer listings by location, returning trainer summaries (name, profile image, headline, experience details, rating, review count, repeat-client count, years of experience, city/state/zip, starting price, training methodology, and skill/behavior tags).
/rover/trainer-searchQuery parameters:
location (required) — free-text address, city, or zip code, e.g.
"Seattle, WA" or "98121".Notable response behavior:
trainers: [] with a 200,
distinct from a parser-drift or blocked-page failure, which returns an
error instead.starting_price reflects a session's own base rate, not a package/bundle
price.profile_url is what
GET /rover/trainer/{slug} needs.| Field | Filled in, of 41 checked | Values in the sample |
|---|---|---|
| slug | 41 | |
| profile_url | 41 | rover.com |
| name | 41 | |
| profile_image | 41 | rover.com |
| headline | 41 | |
| experience_details | 41 | median 439 characters |
| rating | 34 | 1 to 5, median 5 |
| review_count | 39 | 1 to 293, median 24 |
| repeat_client_count | 16 | 1 to 36, median 2 |
| years_experience | 41 | 1 to 27, median 4 |
| city | 41 | |
| state | 41 | |
| zip | 41 | |
| starting_price | 41 | 60 to 999, median 120 |
| price_unit | 41 | |
| methodology | 40 | |
| skills | 40 | median 4 entries |
| behaviors | 40 | median 13 entries |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| location | string | Yes | Free-text address, city, or zip code, e.g. \ | Seattle, WA | |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/rover/trainer-search?location=Seattle%2C+WA" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"location": "Seattle, WA",
"trainers": [
{
"slug": "madison-h-over-6-years-of-pet-care-experience",
"profile_url": "https://www.rover.com/training/members/madison-h-over-6-years-of-pet-care-experience/",
"name": "Madison H.",
"profile_image": "https://www.rover.com/cf-image-cdn/remote/images/people/Q9pOj7Pg/ahyvzcsdeh/original?width=450&height=450&quality=70&fit=cover",
"headline": "Let's Make Training Fun!",
"experience_details": "I am passionate about making training an enjoyable experience for both pets and their guardians!",
"rating": 5,
"review_count": 97,
"repeat_client_count": 36,
"years_experience": 2,
"city": "Seattle",
"state": "WA",
"zip": "98103",
"starting_price": 100,
"price_unit": "per session",
"methodology": "positive-reinforcement",
"skills": [
"puppy-training",
"adult-dog-training",
"clicker-training"
],
"behaviors": [
"barking",
"jumping",
"leash-manners"
]
}
]
}
}Request schema
No body schema
Response schema
#/definitions/rover.trainerSearchResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | rover.TrainerSearchResponse | No | ||||
| data.location | string | No | ||||
| data.trainers | array | No | ||||
| data.trainers[].behaviors | array | No | ||||
| data.trainers[].city | string | No | ||||
| data.trainers[].experience_details | string | No | ||||
| data.trainers[].headline | string | No | ||||
| data.trainers[].methodology | string | No | ||||
| data.trainers[].name | string | No | ||||
| data.trainers[].price_unit | string | No | ||||
| data.trainers[].profile_image | string | No | ||||
| data.trainers[].profile_url | string | No | ||||
| data.trainers[].rating | number | No | ||||
| data.trainers[].repeat_client_count | integer | No | ||||
| data.trainers[].review_count | integer | No | ||||
| data.trainers[].skills | array | No | ||||
| data.trainers[].slug | string | No | ||||
| data.trainers[].starting_price | number | No | ||||
| data.trainers[].state | string | No | ||||
| data.trainers[].years_experience | integer | No | ||||
| data.trainers[].zip | string | No | ||||
| msg | string | No | OK |
| Status | Description | Schema |
|---|---|---|
| 400 | Bad Request | #/definitions/app.Response |
| 404 | Not Found | #/definitions/app.Response |
| 500 | Internal Server Error | #/definitions/app.Response |
| 503 | Service Unavailable | #/definitions/app.Response |
Use environment variables for secrets and keep Crawlora API keys server-side.
curl -X GET "https://api.crawlora.net/api/v1/rover/trainer-search?location=Seattle%2C+WA" \
-H "x-api-key: $CRAWLORA_API_KEY"