Operated by Sourcelane✓ verified
A searchable Instagram influencer and creator discovery tool that finds accounts by keyword and hashtag and applies configurable filters to identify niche creators; it inspects profile metadata and recent content to extract contact information (email, phone, website, business address), account classification (business/creator/personal and business category), and computed activity and engagement metrics. Technical capabilities include crawling discovered profiles, analysing a sample of recent posts and reels to compute posting frequency, recency, average likes and comments, engagement rate, median reel views and views-to-followers ratio, language detection from bio, and a quality classification for engagement; contact extraction sources include profile contact buttons, bio text and post captions. The connector supports filtering by follower ranges, verification status, account type and category keywords, presence of website or contact details, location and language heuristics, engagement thresholds, post/reel recency and posting frequency, enabling targeted discovery of influencers and businesses without requiring login or cookies.
Verified Sep 28, 12:10 AM
$0.03
per influencer account
Up to 33 per call. Only pay for results returned; failed calls are refunded.
| Window | Uptime | Success rate | p50 | p95 | Calls |
|---|---|---|---|---|---|
| 24h | — | — | — | — | 0 |
| 7d | — | — | — | — | 0 |
| 30d | — | — | — | — | 0 |
Call it through Sourcelane's gateway or MCP server. We run the connector, apply your agent's spend guardrails, and bill only the results returned.
Call it via Sourcelane
curl -X POST https://cool-puffin-608.convex.site/v1/call \
-H "Authorization: Bearer sl_live_your_agent_key" \
-H "Content-Type: application/json" \
-d '{"listing":"instagram-influencer-search","params":{"searchQueries":["fitness coach"],"maxResults":5},"maxResults":10}'Request params
| Field | Type | Required | Description |
|---|---|---|---|
searchQueries | array | optional | Keywords, niches or job titles to search Instagram accounts for (e.g. "fitness coach", "vegan chef", "travel photographer"). Each keyword returns Instagram's top matching accounts. |
searchHashtags | array | optional | Hashtags (with or without #) whose top posts are scanned for their authors (e.g. "homeworkout", "veganrecipes"). Great for finding creators who are actually active in a niche. |
maxSearchPagesPerQuery | integer | optional | How many result pages to fetch for each keyword (about 20 accounts per page) and each hashtag (about 24 posts per page). Increase to discover more candidates per query. |
maxCountDiscovery | integer | optional | Hard ceiling on how many unique discovered accounts are enriched (profile + recent posts) and run through the filters. This bounds the run's cost and duration. Only accounts that pass every filter are returned and charged. |
maxResults | integer | optional | Stop after this many influencers have passed the filters and been saved. 0 = no limit (bounded only by Max accounts to analyse). Capped at 33 per call. |
extractEmail | boolean | optional | Return the public email from the profile's contact button, or one found in the bio. |
extractPhoneNumber | boolean | optional | Return the public phone number from the profile's contact button, or one found in the bio. |
extractWebsiteUrl | boolean | optional | Return the external link from the profile bio. |
extractBusinessCategory | boolean | optional | Return the Instagram business/creator category label (e.g. "Personal trainer", "Digital creator"). |
extractPhysicalAddress | boolean | optional | Return the street address, city and ZIP that business accounts publish on their profile. |
extractPosts | boolean | optional | Attach the analysed recent posts (URL, type, date, likes, comments, plays, caption and any contacts parsed from the caption) to each result. |
postsSampleSize | integer | optional | How many recent posts are fetched per account to compute engagement, posting cadence and reel views (12 per page; 12, 24 or 36). More posts = more accurate metrics but a slightly slower run. |
searchContactsInPosts | boolean | optional | Also look for emails and phone numbers in recent post captions when the profile itself does not expose them. |
analyzeQuality | boolean | optional | Compute a qualityFlag (good / average / low / suspicious) from engagement rate, follower/following balance and reel reach. |
minFollowers | integer | optional | Skip accounts with fewer followers than this. 0 = no minimum. |
maxFollowers | integer | optional | Skip accounts with more followers than this. 0 = no maximum. |
mustBeVerified | boolean | optional | Only return accounts with a verified badge. |
accountType | string | optional | Only return accounts of this Instagram account type. |
categoryFilter | array | optional | Only return accounts whose Instagram category label contains one of these words (case-insensitive), e.g. "trainer", "coach", "creator". Accounts without a category are skipped when this is set. |
hasWebsite | boolean | optional | Only return accounts with an external link in their bio. |
contactInfoType | string | optional | Only return accounts that expose the given contact info (from the contact button, bio, or captions when caption search is on). |
locationKeywords | array | optional | Only return accounts whose bio, name, city or address mentions one of these places (case-insensitive), e.g. "London", "NYC", "Australia". |
profileLanguage | string | optional | Only return accounts whose bio is detected as this language (ISO 639-1 code such as en, es, pt, fr, de, it, ru, ar, ja, ko, zh, hi, tr, id, nl). Leave empty for any language. |
minEngagementRate | number | optional | Skip accounts whose average (likes + comments) per recent post divided by followers is below this percentage. 0 = no minimum. |
lastPostDays | integer | optional | Skip accounts whose most recent post is older than this many days. 0 = no limit. |
lastReelDays | integer | optional | Skip accounts whose most recent reel is older than this many days (accounts with no reels in the sample are skipped too). 0 = no limit. |
minPostsInPeriod | integer | optional | Skip accounts that published fewer than this many posts in the period defined by "Posted within the last N days" (or the last 30 days when that is 0). 0 = no minimum. |
minMedianViews | integer | optional | Skip accounts whose median reel play count is below this. Accounts with no reels in the sample are skipped when this is set. 0 = no minimum. |
viewFollowerRatioMin | number | optional | Skip accounts whose median reel views divided by followers is below this (e.g. 0.1 = reels reach at least 10% of followers). 0 = no minimum. |
viewFollowerRatioMax | number | optional | Skip accounts whose median reel views divided by followers is above this (useful to exclude viral-only or bought-view accounts). 0 = no maximum. |
Each result contains
| Field | Type | Description |
|---|---|---|
url | string | Url |
username | string | Username |
fullName | string | Full Name |
profilePicUrl | string | Profile Pic Url |
isVerified | boolean | Is Verified |
followers | integer | Followers |
following | integer | Following |
postsCount | integer | Posts Count |
postsPerMonth | integer | Posts Per Month |
lastPostDaysAgo | number | Last Post Days Ago |
reelsCount | integer | Reels Count |
lastReelDaysAgo | number | Last Reel Days Ago |
medianReelViews | integer | — |
viewsToFollowersRatio | number | — |
avgLikes | integer | — |
avgComments | integer | — |
engagementRate | number | — |
qualityFlag | string | — |
email | string | — |
emailSource | string | — |
phone | null | — |
phoneSource | null | — |
externalUrl | string | — |
address | null | — |
businessCategory | string | — |
detectedLanguage | string | — |
accountType | string | — |
biography | string | — |
discoveredVia | string | — |
Pick your tool and connect in under a minute. Then just ask — for example: “Pull the last 20 posts from @natgeo and tell me which formats get the most engagement.”
Connect Claude
Web, desktop and mobile. Paste one URL.
Adds the Sourcelane MCP server with your key as a header.
claude mcp add --transport http sourcelane https://cool-puffin-608.convex.site/mcp \
--header "Authorization: Bearer sl_live_your_agent_key"Alternative to the connector URL: add to claude_desktop_config.json, then restart Claude.
{
"mcpServers": {
"sourcelane": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://cool-puffin-608.convex.site/mcp",
"--header",
"Authorization:${AUTH_HEADER}"
],
"env": {
"AUTH_HEADER": "Bearer sl_live_your_agent_key"
}
}
}
}Add to ~/.cursor/mcp.json (or Windsurf's mcp_config.json).
{
"mcpServers": {
"sourcelane": {
"url": "https://cool-puffin-608.convex.site/mcp",
"headers": {
"Authorization": "Bearer sl_live_your_agent_key"
}
}
}
}Save as .vscode/mcp.json. VS Code prompts for your key once.
{
"servers": {
"sourcelane": {
"type": "http",
"url": "https://cool-puffin-608.convex.site/mcp",
"headers": {
"Authorization": "Bearer ${input:sourcelane-key}"
}
}
},
"inputs": [
{
"type": "promptString",
"id": "sourcelane-key",
"description": "Sourcelane agent key",
"password": true
}
]
}Create a GPT → Actions → Import from URL, then Authentication: API Key, Bearer.
https://sourcelane-amber.vercel.app/openapi.jsonOne POST. Pass maxResults to cap cost.
curl -X POST https://cool-puffin-608.convex.site/v1/call \
-H "Authorization: Bearer sl_live_your_agent_key" \
-H "Content-Type: application/json" \
-d '{"listing":"instagram-influencer-search","params":{"searchQueries":["fitness coach"],"maxResults":5},"maxResults":10}'Wrap the REST call as a tool, or point an MCP client at the endpoint.
import requests
res = requests.post(
"https://cool-puffin-608.convex.site/v1/call",
headers={"Authorization": "Bearer sl_live_your_agent_key"},
json={
"listing": "instagram-influencer-search",
"params": {"searchQueries":["fitness coach"],"maxResults":5},
"maxResults": 10,
},
timeout=300,
)
body = res.json()
print(body["receipt"]["chargedMicros"], "micro-USD for", body["receipt"]["results"], "results")
print(body["data"])—
0 reviews
Leave a review
Loading reviews…