linkedin_ads_search_ad_library
Search LinkedIn Ad Library
LinkedinDescription
Search the LinkedIn Ad Library for ads from any advertiser. Returns real creative content — ad copy (primary text, headline, description, CTA), landing URLs, run dates, and media source/mirrored URLs. Served from Hopkin's scraped ad-library corpus (LinkedIn exposes no ad-library API); when the corpus has nothing for a query, a live scrape of the public Ad Library runs on demand (may take 60-90s). Filter by organization_ids (numeric LinkedIn org IDs), display_format (e.g. sponsored_status_update, sponsored_video), languages (names like "English"), delivery dates, and active status. Does NOT require a connected LinkedIn ad account — searches globally.
Usage
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "linkedin_ads_search_ad_library",
"arguments": {
"search_terms": "sales automation",
"countries": [
"US"
],
"reason": "Competitive research on B2B sales tooling ads"
}
}
}
hopkin linkedin search-ad-library
| Flag | Type | Required | Description |
|---|---|---|---|
--search-terms | string | Optional | Keywords to search for in ad content. Spaces act as AND. Use the language the ad is written in. |
--search-type | string | Optional | Search mode: KEYWORD_UNORDERED (default, any order) or KEYWORD_EXACT_PHRASE |
--organization-ids | array | Optional | Filter by up to 10 numeric LinkedIn organization IDs. Use this for competitor/brand lookups. |
--countries | array | Required | REQUIRED. ISO-3166-1 alpha-2 country codes (e.g. ["US", "GB"] — use "GB" not "UK") or ["ALL"]. Scopes on-demand scrapes; corpus rows carry no per-ad reach countries. |
--ad-active-status | string | Optional | Filter by delivery status. Default: ACTIVE |
--ad-delivery-date-min | string | Optional | Minimum delivery date (YYYY-MM-DD) |
--ad-delivery-date-max | string | Optional | Maximum delivery date (YYYY-MM-DD). Ads whose start date is unknown (not yet detail-enriched) are excluded by this bound. |
--display-format | string | Optional | Filter by creative type as recorded from the LinkedIn Ad Library (case-insensitive). Observed values: sponsored_status_update, sponsored_video, sponsored_update_linkedin_article, sponsored_message, sponsored_update_native_document, sponsored_update_event. sponsored_status_update is a single-image post; the vocabulary is LinkedIn’s own and open-ended. |
--languages | array | Optional | Filter by language name as shown in LinkedIn ad transparency data, e.g. ["English"] |
--limit | integer | Optional | Results per page (default: 25, max: 50) |
--cursor | string | Optional | Pagination cursor from previous response |
{
"mcpServers": {
"linkedin-ads": {
"url": "https://linkedin.mcp.hopkin.ai",
"transport": "sse"
}
}
}
- Search by keyword
- Search by organization ID
- Video ads only
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
countries |
array |
Required | REQUIRED. ISO-3166-1 alpha-2 country codes (e.g. ["US", "GB"] — use "GB" not "UK") or ["ALL"]. Scopes on-demand scrapes; corpus rows carry no per-ad reach countries. |
reason |
string |
Required | Why this tool call is neededminLength: 1, maxLength: 500 |
Optional parameters (10)
| Name | Type | Required | Description |
|---|---|---|---|
search_terms |
string |
Optional | Keywords to search for in ad content. Spaces act as AND. Use the language the ad is written in.minLength: 1, maxLength: 100 |
search_type |
string |
Optional | Search mode: KEYWORD_UNORDERED (default, any order) or KEYWORD_EXACT_PHRASEKEYWORD_UNORDERED KEYWORD_EXACT_PHRASE |
organization_ids |
array |
Optional | Filter by up to 10 numeric LinkedIn organization IDs. Use this for competitor/brand lookups. |
ad_active_status |
string |
Optional | Filter by delivery status. Default: ACTIVEACTIVE INACTIVE ALL |
ad_delivery_date_min |
string |
Optional | Minimum delivery date (YYYY-MM-DD)pattern: ^\d{4}-\d{2}-\d{2}(T\d{2}:\d{2}(:\d{2}(\.\d+)?)?(Z|[+-]\d{2}:\d{2})?)?$ |
ad_delivery_date_max |
string |
Optional | Maximum delivery date (YYYY-MM-DD). Ads whose start date is unknown (not yet detail-enriched) are excluded by this bound.pattern: ^\d{4}-\d{2}-\d{2}(T\d{2}:\d{2}(:\d{2}(\.\d+)?)?(Z|[+-]\d{2}:\d{2})?)?$ |
display_format |
string |
Optional | Filter by creative type as recorded from the LinkedIn Ad Library (case-insensitive). Observed values: sponsored_status_update, sponsored_video, sponsored_update_linkedin_article, sponsored_message, sponsored_update_native_document, sponsored_update_event. sponsored_status_update is a single-image post; the vocabulary is LinkedIn’s own and open-ended.minLength: 1 |
languages |
array |
Optional | Filter by language name as shown in LinkedIn ad transparency data, e.g. ["English"] |
limit |
integer |
Optional | Results per page (default: 25, max: 50)min: 1, max: 50 |
cursor |
string |
Optional | Pagination cursor from previous responseminLength: 1 |
Examples
Search by keyword
{
"search_terms": "sales automation",
"countries": [
"US"
],
"reason": "Competitive research on B2B sales tooling ads"
}
hopkin linkedin search-ad-library --search-terms sales automation --countries US
Search by organization ID
{
"organization_ids": [
"3185"
],
"countries": [
"US"
],
"reason": "View competitor ads"
}
hopkin linkedin search-ad-library --organization-ids 3185 --countries US
Video ads only
{
"search_terms": "crm",
"countries": [
"ALL"
],
"display_format": "sponsored_video",
"reason": "Creative research"
}
hopkin linkedin search-ad-library --search-terms crm --countries ALL --display-format sponsored_video