What the API gives you
The same search as the StarHunt app, with the same ranking: people who ship to the reference open-source projects of a technology, ordered by recent, merged work rather than by follower count. Each search returns 25 profiles per page, and you walk the pages with a cursor, up to 1,000 profiles per search.
Every field comes from public GitHub data. Contact details are the ones a developer chose to publish, never scraped from commits, and anyone can remove themselves from StarHunt in one click.
| Base URL | https://app.getstarhunt.com/api/v1 |
|---|---|
| Format | JSON in, JSON out, UTF-8 |
| Authentication | Authorization: Bearer sh_your_key |
| Availability | API and Scale plans. Write to us to enable it on your account. |
Your API key
Generate a key in the app, under MCP and connectors. Send it in the Authorization header of every request, or in X-API-Key if your client cannot set the first one. A key is shown once: store it as a secret, never in client-side code, and regenerate it from the same page if it leaks.
Search developers
Starts a search and returns its first page.
| Field | Description |
|---|---|
technologies | List of technology keys, any of them matches. See GET /technologies. |
locations | Cities, countries or continents, any of them matches. A city covers its metro area. |
role | Optional role key, for example ai_product or data_eng. |
keywords | Optional terms that lift profiles mentioning them. |
repositories | Optional owner/repo list: only their contributors. |
Give at least one technology, a role or a repository.
curl https://app.getstarhunt.com/api/v1/search \
-H "Authorization: Bearer sh_your_key" \
-H "Content-Type: application/json" \
-d '{"technologies": ["rust"], "locations": ["Berlin"]}'
{
"data": [
{
"login": "jdoe",
"name": "Jane Doe",
"github_url": "https://github.com/jdoe",
"location": "Berlin, Germany",
"email": "jane@example.dev",
"linkedin": null,
"technologies": ["rust", "kubernetes"],
"contributes_to": "tokio-rs/tokio",
"open_to_work": false,
"last_active": "2026-10-12T09:41:00Z",
...
}
],
"page": 1,
"page_size": 25,
"has_more": true,
"next_cursor": "q1Xk2aB9fV0.2",
"total_matches": 840
}
Next pages
Send the next_cursor of the last page to get the following one, in the same order and without duplicates. Request pages one after the other: a cursor is valid six hours, and a search stops at 40 pages.
curl https://app.getstarhunt.com/api/v1/search \
-H "Authorization: Bearer sh_your_key" \
-H "Content-Type: application/json" \
-d '{"cursor": "q1Xk2aB9fV0.2"}'
has_more turns false on the last page, and next_cursor is then null.
One profile
The full profile of one developer of the index, by GitHub login. Returns 404 when the person is not in the index or asked to be removed.
curl https://app.getstarhunt.com/api/v1/profiles/jdoe \ -H "Authorization: Bearer sh_your_key"
Profile fields
login, name, github_url, avatar_url | Identity on GitHub. |
|---|---|
bio, company | As written on the profile. |
location, metro | Free-text location, and the metro area StarHunt matched it to. |
email, website, linkedin, twitter | Only what the developer published. Null otherwise. |
technologies, roles, languages | Inferred from their own repositories and the projects they contribute to. |
contributes_to, top_repository | The reference project they ship to, and their most starred repository. |
open_to_work | GitHub's "available for hire" flag. |
last_active | Last public push. |
followers, public_repos | Counts from GitHub. |
New fields may be added; existing ones keep their name and meaning within v1.
Technologies and roles
The keys accepted by technologies and role. No key needed.
curl https://app.getstarhunt.com/api/v1/technologies
Usage and limits
Distinct profiles returned to your account over the last 24 hours and 30 days, and the limits of your plan. Seeing the same profile again does not count twice.
{
"plan": "api",
"profiles_seen": {"last_24h": 312, "last_30d": 4120},
"limits": {"per_24h": 2500, "per_30d": 25000}
}
A null limit means the plan has none. Requests are limited to 60 per minute per account.
Error codes
Errors come as {"error": "code", "message": "..."} with the matching HTTP status.
400 invalid_request | Unknown technology or role, or nothing to search on. |
|---|---|
401 unauthorized | Missing or invalid API key. |
403 plan_required | The account is not on the API or Scale plan. |
403 page_limit | The search reached its 40 pages. |
404 search_expired | The cursor is older than six hours. Run the search again. |
409 page_out_of_order | Use the next_cursor of the last page you received. |
429 rate_limited, daily_profile_limit, monthly_profile_limit | Too many requests, or the plan's profile limit. The Retry-After header says when to retry. |
Using the data
Profiles are public GitHub data, provided for recruiting. Contact people one by one and say where you found them; do not resell the data, build a copy of the index, or send automated bulk emails. When someone asks you to stop, stop: they can also remove themselves from StarHunt at any time.
Prefer an assistant to code? The same search is available as an MCP connector for Claude, ChatGPT and other clients.
Get API access
Tell us what you are building and the volume you expect, and we will set up your account.
Request API access →