Find app developers to pitch - a filtered lead list with each developer's best scored business email (Studio plan).

GEThttps://api.appgoat.ai/v1/developers
1+ credits1 per pageoperationId listDevelopers

Developer lead lists (Studio). Filter by store, top category, country, total ratings range, app count, last app update and email quality; page with cursor. Each row has the developer's profile, reach and the best business contact we found and scored (email, email_score 0-100, email_role, email_mx_ok). Personal addresses, addresses that failed the MX check or opted out, and developers who asked not to be contacted are never returned. 1 credit per page (up to 500 rows). Other plans get 402 plan_limit; GET /v1/developers/{dev} works on every plan.

Request

curl "https://api.appgoat.ai/v1/developers?store=apple&has_email=true&min_ratings=1000" \
  -H "x-api-key: $APPGOAT_API_KEY"

Query parameters

store"apple" | "play"
qstring
Name substring, exact domain or developer id.
categorystring
The developer's top category (as in the store, e.g. Productivity, GAME_PUZZLE).
countrystring
Developer country (2-letter ISO, best effort from address / website).
min_ratingsinteger
Total ratings across the developer's apps, at least.
max_ratingsinteger
Total ratings, at most (e.g. 20000 to skip big brands).
min_installsinteger
Total Google Play installs, at least.
min_appsinteger
Number of apps they publish, at least.
max_appsinteger
Number of apps, at most (e.g. 20 for indie studios).
updated_sincestring
Some app of theirs was updated in the store on or after this date.
updated_within_daysinteger
Same as updated_since, relative (e.g. 365).
has_emailboolean
Only developers with a usable scored business email.

Default false

min_email_scoreinteger
Only developers whose best email scores at least this (0-100; implies has_email). 60+ is a good outreach threshold.
sort"reach" | "ratings" | "apps" | "recent"
reach = ratings + installs/100; ratings; apps; recent = most recent app update.

Default "reach"

limitinteger

Default 50

cursorstring
meta.next_cursor from the previous page.

Response

200 with data: DeveloperLead[]. See the envelope for meta.

storeStore
developer_idstring
namestring | null
urlstring | null
Developer page in the store.
websitestring | null
domainstring | null
countrystring | null
support_urlstring | null
app_countinteger | null
total_ratingsinteger | null
total_installsinteger | null
top_categorystring | null
last_app_updatestring | null
Most recent store update of any of their apps.
emailstring | null
Best scored business email (never personal
email_scoreinteger | null
0-100 (role
email_rolestring | null
support, sales, press, legal, privacy or generic.
email_mx_okboolean | null
Example
{
  "data": [
    {
      "store": "apple",
      "developer_id": "string",
      "name": "string",
      "url": "string",
      "website": "string",
      "domain": "string",
      "country": "us",
      "support_url": "string",
      "app_count": 1,
      "total_ratings": 1,
      "total_installs": 1,
      "top_category": "string",
      "last_app_update": "2026-10-22T10:00:00Z",
      "email": "string",
      "email_score": 1,
      "email_role": "string",
      "email_mx_ok": false
    }
  ],
  "meta": {
    "credits_used": 1,
    "credits_remaining": 9981,
    "request_id": "req_123"
  }
}

Status codes

200
One page of developers; meta.next_cursor for the next.
A parameter is missing or invalid (error.param names it).
Missing or invalid API key.
insufficient_credits (the call costs more than you have left; nothing was done) or plan_limit (a feature of a higher plan).
Too many requests per second for your plan.