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
  }'
const response = await fetch("https://api.socialrouter.io/v1/search", {
  method: "POST",
  headers: {
    "Authorization": "Bearer sr_live_your_key",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    queries: ["coffee shops in Brooklyn", "bakeries in Brooklyn"],
    provider: "apify/googlemaps/place.search",
    limit: 50,
  }),
});
import requests

response = requests.post(
    "https://api.socialrouter.io/v1/search",
    headers={"Authorization": "Bearer sr_live_your_key"},
    json={
        "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"
}
{
  "error": {
    "code": "wrong_endpoint",
    "message": "Type \"profile.info\" is not a search type. If it is an extraction type, use POST /v1/extract instead. Valid search types: place.search, video.search.",
    "type": "validation"
  }
}
{
  "error": {
    "code": "missing_queries",
    "message": "The 'queries' field is required and must be a non-empty array of strings.",
    "type": "validation"
  }
}
{
  "error": {
    "code": "insufficient_credits",
    "message": "Insufficient balance. Add credits at your dashboard.",
    "type": "billing"
  }
}
{
  "error": {
    "code": "request_soft_timeout",
    "message": "Provider stalled — no activity within the soft limit.",
    "type": "timeout"
  }
}
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
  }'
const response = await fetch("https://api.socialrouter.io/v1/search", {
  method: "POST",
  headers: {
    "Authorization": "Bearer sr_live_your_key",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    queries: ["coffee shops in Brooklyn", "bakeries in Brooklyn"],
    provider: "apify/googlemaps/place.search",
    limit: 50,
  }),
});
import requests

response = requests.post(
    "https://api.socialrouter.io/v1/search",
    headers={"Authorization": "Bearer sr_live_your_key"},
    json={
        "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"
}
{
  "error": {
    "code": "wrong_endpoint",
    "message": "Type \"profile.info\" is not a search type. If it is an extraction type, use POST /v1/extract instead. Valid search types: place.search, video.search.",
    "type": "validation"
  }
}
{
  "error": {
    "code": "missing_queries",
    "message": "The 'queries' field is required and must be a non-empty array of strings.",
    "type": "validation"
  }
}
{
  "error": {
    "code": "insufficient_credits",
    "message": "Insufficient balance. Add credits at your dashboard.",
    "type": "billing"
  }
}
{
  "error": {
    "code": "request_soft_timeout",
    "message": "Provider stalled — no activity within the soft limit.",
    "type": "timeout"
  }
}