logo
API GuidesLinkedIn Ads & Lead Search

LinkedIn Ads & Lead Search

Search LinkedIn's Ad Library, get ad details with targeting data, run advanced lead searches with 30+ filters, and resolve geo IDs for location-based queries.

Search LinkedIn's Ad Library by keyword, company, country, and date range. Supports both structured parameters and raw Ad Library search URLs.

Endpoint: GET /ad_search Credits: 0.2 per result returned

Request

# Structured search
curl "https://v3-api.texau.com/api/v1/ad_search?keyword=hiring&accountOwner=stripe&countries=US&dateOption=last-30-days" \
  -H "x-api-key: YOUR_API_KEY"

# Or pass a full Ad Library URL directly
curl "https://v3-api.texau.com/api/v1/ad_search?searchUrl=https://www.linkedin.com/ad-library/search?accountOwner=stripe&keyword=hiring&dateOption=last-30-days" \
  -H "x-api-key: YOUR_API_KEY"

Query Parameters

ParameterTypeRequiredDescription
searchUrlstringNoFull LinkedIn Ad Library search URL (alternative to the params below)
keywordstringNoSearch by keyword
accountOwnerstringNoCompany or advertiser name
countriesstringNoComma-separated country codes (e.g. US,GB,FR) or ALL
dateOptionstringNolast-30-days, current-month, current-year, last-year, or custom-date-range
startdatestringNoStart date for custom range (YYYY-MM-DD)
enddatestringNoEnd date for custom range (YYYY-MM-DD)
paginationTokenstringNoToken from previous response for next page

At least one of searchUrl, keyword, or accountOwner must be provided.

Response

{
  "elements": [
    {
      "id": "1383308086",
      "advertiser": {
        "name": "Blue Stripes",
        "imageUrl": "https://media.licdn.com/dms/image/...",
        "headline": "Promoted"
      },
      "content": {
        "headline": null,
        "description": "RARE CAREER OPPORTUNITY — Blue Stripes Finance Manager...",
        "pageUrl": "https://www.linkedin.com/ad-library/detail/1383308086",
        "imageUrl": null
      },
      "creativeType": "SPONSORED_UPDATE_NATIVE_DOCUMENT"
    }
  ],
  "pagination": {
    "totalPages": 1,
    "totalElements": 1,
    "pageNumber": null,
    "pageSize": 24,
    "paginationToken": "0#24"
  },
  "status": 200,
  "query": {
    "keyword": "hiring",
    "accountOwner": "stripe",
    "dateOption": "last-30-days"
  }
}

Response Fields

FieldTypeDescription
elementsarrayMatching ads
elements[].idstringAd ID
elements[].advertiserobjectAdvertiser info (name, imageUrl, headline)
elements[].contentobjectAd creative (headline, description, pageUrl, imageUrl)
elements[].creativeTypestringAd format (e.g. SPONSORED_STATUS_UPDATE, SPONSORED_UPDATE_NATIVE_DOCUMENT)
pagination.paginationTokenstringPass as paginationToken query param for next page

Billing Note

Billed at 0.2 credits per result in the elements array.


LinkedIn Ad Details

Get full details of a specific LinkedIn ad including creative variants, impression breakdown by country, and targeting segments.

Endpoint: GET /ad_details Credits: 2 per call

Request

curl "https://v3-api.texau.com/api/v1/ad_details?url=https://www.linkedin.com/ad-library/detail/1215501393" \
  -H "x-api-key: YOUR_API_KEY"

Query Parameters

ParameterTypeRequiredDescription
urlstringYesLinkedIn Ad Library detail URL

Response

{
  "element": {
    "id": "1383308086",
    "variants": [
      {
        "advertiser": {
          "name": "Blue Stripes",
          "linkedinUrl": "https://www.linkedin.com/company/28498353",
          "imageUrl": "https://media.licdn.com/dms/image/...",
          "headline": "Promoted"
        },
        "content": {
          "description": "RARE CAREER OPPORTUNITY — Blue Stripes Finance Manager...",
          "imageUrl": null,
          "targetUrl": null,
          "headline": null,
          "ctaLabel": null
        },
        "creativeType": "SPONSORED_UPDATE_NATIVE_DOCUMENT"
      }
    ],
    "about": {
      "format": "Document Ad",
      "advertiserName": "Blue Stripes",
      "advertiserUrl": "https://www.linkedin.com/company/28498353",
      "paidBy": "Blue Stripes"
    },
    "impressions": null,
    "targeting": null
  },
  "query": {
    "url": "https://www.linkedin.com/ad-library/detail/1383308086"
  },
  "status": 200
}

impressions and targeting are populated when LinkedIn provides the data. For many ads they may be null.


Advanced LinkedIn lead search with 20+ filters, inclusion/exclusion criteria, and Sales Navigator URL support. Submit clean, human-readable labels (e.g. "seniority": ["Director"]) and TexAu resolves them to LinkedIn IDs server-side. Geo names are resolved automatically via the geo-id-search API.

Endpoint: POST /lead_search Credits: 0.5 per result returned

Request

curl -X POST https://v3-api.texau.com/api/v1/lead_search \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "search": "machine learning",
    "currentJobTitles": ["VP Engineering", "CTO"],
    "seniority": ["Director", "CXO"],
    "companySize": ["51-200", "201-500"],
    "geoIds": ["San Francisco Bay Area"],
    "industries": ["Software Development"],
    "functions": ["Engineering"],
    "page": 1,
    "exclude": {
      "currentJobTitles": ["Intern", "Trainee"],
      "industries": ["Education"]
    }
  }'

Parameters

Main filters

FieldTypeRequiredDescription
searchstringNoKeyword search across profiles
currentJobTitlesstring[]NoCurrent job titles to include
pastJobTitlesstring[]NoPast job titles to include
currentCompaniesstring[]NoCurrent company names or LinkedIn URLs
pastCompaniesstring[]NoPast company names or LinkedIn URLs
senioritystring[]NoSeniority levels — resolved to IDs (use /search_reference_data for valid labels)
industriesstring[]NoIndustry labels — resolved to IDs
functionsstring[]NoJob functions (e.g. Engineering, Sales) — resolved to IDs
companySizestring[]NoCompany headcount ranges (e.g. 51-200, 1001-5000) — resolved to IDs
geoIdsstring[]NoLocation names (resolved to LinkedIn geo IDs automatically) or numeric geo IDs. Max 10
locationsstring[]NoLocation text strings (passed directly, no resolution)
companyHeadquarterLocationsstring[]NoCompany HQ location strings
firstNamesstring[]NoFirst name filter
lastNamesstring[]NoLast name filter
schoolsstring[]NoSchool or university names
yearsOfExperiencestring[]NoExperience ranges — resolved to IDs (use /search_reference_data)
yearsAtCurrentCompanystring[]NoTenure ranges — resolved to IDs
profileLanguagesstring[]NoProfile language labels — resolved to IDs
recentlyChangedJobsbooleanNoFilter to profiles that recently changed jobs
salesNavUrlstringNoSales Navigator search URL — all filters extracted automatically
sessionIdstringNoSession ID from a previous response for consistent pagination. Auto-generated if omitted
pageintegerNoPage number (1-based, default 1)

Exclusion filters

Pass an exclude object to negate any of these filters:

Field (inside exclude)TypeDescription
senioritystring[]Exclude these seniority levels
industriesstring[]Exclude these industries
functionsstring[]Exclude these job functions
locationsstring[]Exclude these locations
geoIdsstring[]Exclude these geo IDs or location names
currentCompaniesstring[]Exclude these current companies
pastCompaniesstring[]Exclude these past companies
currentJobTitlesstring[]Exclude these current titles
pastJobTitlesstring[]Exclude these past titles
schoolsstring[]Exclude these schools
companyHeadquarterLocationsstring[]Exclude these HQ locations

Provide at least one filter parameter, or use salesNavUrl with a Sales Navigator URL.

Response

{
  "elements": [
    {
      "id": "ACwAADcNXDMByxdFzyln9Cob7j6GtPph-lUVN7I",
      "linkedinUrl": "https://www.linkedin.com/in/ACwAADcNXDMByxdFzyln9Cob7j6GtPph-lUVN7I",
      "firstName": "Chris",
      "lastName": "Viets",
      "summary": "IT Enthusiast / Marvel Fan...",
      "openProfile": false,
      "premium": false,
      "currentPositions": [
        {
          "title": "CTO",
          "companyName": "ISG Intermed Service GmbH & Co. KG",
          "companyId": "6775639",
          "companyLinkedinUrl": "https://www.linkedin.com/company/6775639",
          "description": "Prokurist und Abteilungsleiter...",
          "current": true,
          "startedOn": { "month": 4, "year": 2025 },
          "tenureAtPosition": { "numYears": 1, "numMonths": 1 },
          "tenureAtCompany": { "numYears": 1, "numMonths": 1 }
        }
      ],
      "pictureUrl": "https://media.licdn.com/dms/image/...",
      "location": {
        "linkedinText": "Geesthacht, Schleswig-Holstein, Germany"
      }
    }
  ],
  "pagination": {
    "totalElements": 7780,
    "totalPages": 100,
    "pageNumber": 1,
    "previousElements": 0,
    "pageSize": 25
  },
  "sessionId": "ak_abc123-550e8400-e29b-41d4-a716-446655440000"
}

Response Fields

FieldTypeDescription
elements[].idstringLinkedIn internal profile ID
elements[].linkedinUrlstringFull LinkedIn profile URL
elements[].firstNamestringFirst name
elements[].lastNamestringLast name
elements[].summarystringProfile summary / about text
elements[].openProfilebooleanWhether the profile accepts InMail from non-connections
elements[].premiumbooleanWhether the profile has LinkedIn Premium
elements[].currentPositionsarrayCurrent job positions with company details and tenure
elements[].pictureUrlstringProfile photo URL
elements[].location.linkedinTextstringLocation as displayed on LinkedIn
pagination.totalElementsintegerTotal matching leads across all pages
pagination.totalPagesintegerTotal pages (max 100)
pagination.pageSizeintegerResults per page (default 25)
sessionIdstringReuse in subsequent requests for consistent pagination

Pagination

Use the sessionId from the first response to maintain consistent pagination across pages:

# Page 2 — pass the sessionId from page 1
curl -X POST https://v3-api.texau.com/api/v1/lead_search \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "currentJobTitles": ["VP Engineering"],
    "seniority": ["Director", "CXO"],
    "page": 2,
    "sessionId": "ak_abc123-550e8400-e29b-41d4-a716-446655440000"
  }'

Resolution behavior

  • seniority, industries, functions, companySize, yearsOfExperience, yearsAtCurrentCompany, profileLanguages — Labels are resolved to LinkedIn numeric IDs server-side. Use /search_reference_data to get the valid labels.
  • geoIds — Location names (e.g. "San Francisco Bay Area") are resolved to numeric geoIds via the geo-id-search API. You can also pass numeric IDs directly to skip resolution. Max 10 names per request.
  • All other list fields — Passed through as-is. Max 70 items per list.

Billing Note

Billed at 0.5 credits per result in the elements array. A page returning 10 results costs 5 credits.


Look up LinkedIn Geo IDs by location name. Returns geoId + title pairs for use with profile_search's geoId parameter or for verifying location resolution in lead_search.

Endpoint: GET /geo_id_search Credits: 0.01 per call

Request

curl "https://v3-api.texau.com/api/v1/geo_id_search?search=San%20Francisco" \
  -H "x-api-key: YOUR_API_KEY"

Query Parameters

ParameterTypeRequiredDescription
searchstringYesLocation name to search (e.g. San Francisco, United Kingdom)

Response

{
  "elements": [
    {
      "geoId": "102095887",
      "title": "San Francisco Bay Area"
    },
    {
      "geoId": "101933928",
      "title": "San Francisco, California, United States"
    }
  ],
  "status": 200,
  "error": null,
  "query": {
    "search": "San Francisco"
  }
}
# Step 1: Resolve location to geo ID
curl "https://v3-api.texau.com/api/v1/geo_id_search?search=Berlin" \
  -H "x-api-key: YOUR_API_KEY"
# → geoId: "106967730"

# Step 2: Use geo ID in profile search for precise results
curl "https://v3-api.texau.com/api/v1/profile_search?geoId=106967730&title=CTO" \
  -H "x-api-key: YOUR_API_KEY"

LinkedIn Reference Data

Returns all valid filter labels for lead_search. Use this to populate dropdowns or validate filter values before submitting a search. No external API call is made — data is served from an in-memory catalog.

Endpoint: GET /search_reference_data Credits: Free (0 credits)

Request

curl https://v3-api.texau.com/api/v1/search_reference_data \
  -H "x-api-key: YOUR_API_KEY"

Response

{
  "seniority": [
    "CXO",
    "Director",
    "Entry Level",
    "Entry Level Manager",
    "Experienced Manager",
    "In Training",
    "Owner / Partner",
    "Senior",
    "Strategic",
    "Vice President"
  ],
  "companySize": [
    "Self-employed",
    "1-10",
    "11-50",
    "51-200",
    "201-500",
    "501-1000",
    "1001-5000",
    "5001-10000",
    "10001+"
  ],
  "functions": [
    "Accounting",
    "Administrative",
    "Arts and Design",
    "Business Development",
    "Community and Social Services",
    "Consulting",
    "Education",
    "Engineering",
    "Entrepreneurship",
    "Finance",
    "Healthcare Services",
    "Human Resources",
    "Information Technology",
    "Legal",
    "Marketing",
    "Media and Communication",
    "Military and Protective Services",
    "Operations",
    "Product Management",
    "Program and Project Management",
    "Purchasing",
    "Quality Assurance",
    "Real Estate",
    "Research",
    "Sales",
    "Customer Success and Support"
  ],
  "industries": ["...434 industry labels (Accounting, Advertising Services, Banking, ...)..."],
  "yearsOfExperience": [
    "Less than 1 year",
    "1 to 2 years",
    "3 to 5 years",
    "6 to 10 years",
    "More than 10 years"
  ],
  "yearsAtCurrentCompany": [
    "Less than 1 year",
    "1 to 2 years",
    "3 to 5 years",
    "6 to 10 years",
    "More than 10 years"
  ],
  "profileLanguages": {
    "Arabic": "ar",
    "Bahasa Indonesia": "in",
    "Chinese": "zh",
    "Czech": "cs",
    "Danish": "da",
    "Dutch": "nl",
    "English": "en",
    "French": "fr",
    "German": "de",
    "Italian": "it",
    "Japanese": "ja",
    "Korean": "ko",
    "Malay": "ms",
    "Norwegian": "no",
    "Polish": "pl",
    "Portuguese": "pt",
    "Romanian": "ro",
    "Russian": "ru",
    "Spanish": "es",
    "Swedish": "sv",
    "Tagalog": "tl",
    "Turkish": "tr"
  }
}

Usage Pattern

# 1. Fetch valid filter values
REF=$(curl -s https://v3-api.texau.com/api/v1/search_reference_data \
  -H "x-api-key: YOUR_API_KEY")

# 2. Use exact label strings in lead search
curl -X POST https://v3-api.texau.com/api/v1/lead_search \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "seniority": ["Vice President", "Director"],
    "functions": ["Engineering"],
    "companySize": ["201-500", "501-1000"]
  }'