POST
/
v1
/
search
curl -X POST https://api.socialrouter.io/v1/search \
  -H "Authorization: Bearer sr_live_your_key" \
  -H "Content-Type: application/json" \
  -d '{
    "queries": ["coffee shops in Brooklyn", "bakeries in Brooklyn"],
    "provider": "apify/googlemaps/place.search",
    "limit": 50
  }'
{
  "id": "ext_e5f6g7h8",
  "kind": "search",
  "status": "completed",
  "source": "googlemaps",
  "type": "place.search",
  "url": "",
  "queries": ["coffee shops in Brooklyn", "bakeries in Brooklyn"],
  "provider": "apify",
  "credits_used": 0.0900,
  "data": [
    {
      "name": "Devoción",
      "location": "69 Grand St, Brooklyn, NY 11249",
      "profile_url": "https://maps.google.com/?cid=...",
      "source": "googlemaps",
      "extracted_at": "2026-04-10T12:00:18Z"
    }
  ],
  "pagination": {
    "total": 60,
    "returned": 60,
    "next_cursor": null
  },
  "created_at": "2026-04-10T12:00:00Z",
  "completed_at": "2026-04-10T12:00:18Z"
}
Companion endpoint to /v1/extract for services where the input is a search term rather than a URL. The provider slug grammar is identical (provider/platform/type[:tag]) but the type segment must belong to the search-type set — currently place.search (Google Maps) and video.search (YouTube). Sending an extraction type here returns a 400 pointing at /v1/extract.
queries
string[]
required
Non-empty list of search queries. Most actors accept either plain terms or URLs that pin the search context (e.g. a Google Maps URL anchors the search to a location); the adapter decides which bucket each entry lands in.
provider
string
required
Search service slug <provider>/<platform>/<type>[:<tag>], e.g. apify/googlemaps/place.search or apify/googlemaps/place.search:compass. The type must be a search type (place.search, video.search).
limit
number
default:"100"
Per-query cap on returned records. Capped at 1000.
fallback
boolean
default:"true"
Whether to walk the provider chain if the requested provider fails. Set to false to attempt only the requested provider and surface its error directly.
options
object
Per-actor input overrides as a plain JSON object. Each actor decides which keys it honors — unknown keys are dropped server-side. See /v1/extract for the same mechanism on extractions.
curl -X POST https://api.socialrouter.io/v1/search \
  -H "Authorization: Bearer sr_live_your_key" \
  -H "Content-Type: application/json" \
  -d '{
    "queries": ["coffee shops in Brooklyn", "bakeries in Brooklyn"],
    "provider": "apify/googlemaps/place.search",
    "limit": 50
  }'
{
  "id": "ext_e5f6g7h8",
  "kind": "search",
  "status": "completed",
  "source": "googlemaps",
  "type": "place.search",
  "url": "",
  "queries": ["coffee shops in Brooklyn", "bakeries in Brooklyn"],
  "provider": "apify",
  "credits_used": 0.0900,
  "data": [
    {
      "name": "Devoción",
      "location": "69 Grand St, Brooklyn, NY 11249",
      "profile_url": "https://maps.google.com/?cid=...",
      "source": "googlemaps",
      "extracted_at": "2026-04-10T12:00:18Z"
    }
  ],
  "pagination": {
    "total": 60,
    "returned": 60,
    "next_cursor": null
  },
  "created_at": "2026-04-10T12:00:00Z",
  "completed_at": "2026-04-10T12:00:18Z"
}