Documentation Index Fetch the complete documentation index at: https://leadmagic.io/docs/llms.txt
Use this file to discover all available pages before exploring further.
Job Search
Search jobs with frontend-friendly filters. The /v3/jobs/search route resolves company domains, country codes, tags, occupation taxonomy, and title terms into normalized filter IDs before running a bounded query.
POST /v3/jobs-search is an alias for this endpoint with a simplified request shape. Use /v3/jobs/search for new integrations.
Endpoint Details
Metric Value Cost 1 credit per returned job/signalNo Results FREE when no jobs are returnedHelpers Companies, resolve, tags, titles, occupation taxonomy, locations, catalogs, and stats are FREE .
Pre-resolve filters with helpers when your UI needs autocomplete. Free helpers + targeted search beat paying for resolve on every query. Metric Value Requests/Minute 300 Burst Capacity ~5 requests/second
Rate limits are subject to change. Custom rate limits are available on enterprise plans — contact us .
Quick Example
Start with limit: 5 and totalMode: "none" while testing. Add facets, deep mode, salary, company, and taxonomy filters only after the base search works.
curl -X POST 'https://api.leadmagic.io/v3/jobs/search' \
-H 'X-API-Key: YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"titles": { "include": ["Software Engineer"] },
"location": { "regions": ["North America"] },
"postedWithin": 30,
"limit": 5,
"totalMode": "none"
}'
Use this fuller body when you want to combine all supported filters:
{
"titles" : {
"include" : [ "Software Engineer" , "DevOps Engineer" ],
"exclude" : [ "Intern" ],
"vector" : false
},
"occupationTaxonomy" : {
"level1" : [ "Engineering" ],
"level2" : [ "DevOps" ],
"level3" : []
},
"companies" : {
"include" : [ "leadmagic.io" ],
"exclude" : [ "meta.com" ],
"ids" : []
},
"location" : {
"countries" : [ "US" , "GB" ],
"regions" : [],
"states" : [],
"cities" : []
},
"tags" : {
"include" : [ "kubernetes" , "terraform" ],
"exclude" : []
},
"salary" : {
"min_usd" : 120000 ,
"max_usd" : 280000
},
"seniority" : [ "SE" , "EX" ],
"languages" : [ "en" ],
"hasRemote" : true ,
"jobTypeIds" : [],
"industryIds" : [],
"companyTypeIds" : [],
"companySizeCodes" : [],
"postedAfter" : "2026-05-01" ,
"postedWithin" : 30 ,
"workModes" : [ 1 , 2 ],
"includeAgencies" : false ,
"includeCompany" : true ,
"includeDescription" : false ,
"includeFacets" : false ,
"includeOccupationTaxonomy" : true ,
"dryRun" : false ,
"limit" : 25 ,
"totalMode" : "capped" ,
"mode" : "fast" ,
"autoResolve" : true ,
"_query_budget_ms" : 8000
}
Request Parameters
Job title terms. Uses indexed title search.
Request semantic title matching where available.
occupationTaxonomy.level1
Broad occupation families. Results include occupation_taxonomy.level1.id and occupation_taxonomy.level1.name.
occupationTaxonomy.level2
Mid-level occupation categories. Results include occupation_taxonomy.level2.id and occupation_taxonomy.level2.name.
occupationTaxonomy.level3
Specific normalized job titles. Results include occupation_taxonomy.level3.id and occupation_taxonomy.level3.name.
Company domains or names. Domains are resolved exactly; names use fuzzy helper matching.
Company domains or names to exclude.
Exact company IDs from helper responses.
Country codes, names, or IDs.
State or province names or IDs.
Free-text location. Use mode: "deep" when you need text location matching.
Tag names or IDs. Tags are resolved before search and can attach occupation taxonomy metadata.
Tag names or IDs to exclude.
Minimum normalized USD salary.
Maximum normalized USD salary.
Experience levels. Use EN, MI, SE, or EX.
Two-letter language codes such as en, de, or fr.
Filter for jobs that support remote work.
Work mode IDs. Allowed values are 1, 2, and 3.
Job type IDs from the job type catalog.
Company size bucket codes.
Include jobs posted on or after a date in YYYY-MM-DD format.
Include jobs posted before or on a date in YYYY-MM-DD format.
Include jobs posted within the last N days.
Include staffing/recruiting agency jobs. Defaults to excluding agencies.
Number of jobs to return. Maximum is 50.
Cursor from pagination.next_cursor for the next page.
Include a short description snippet. Use only when you need description text.
Include the company object in each returned job.
Request facet metadata where available.
includeOccupationTaxonomy
Include normalized occupation taxonomy fields in each returned job.
Count mode. Use none, capped, or exact.
Query mode. Use fast by default. Use deep only for broader text matching.
Validate/resolve the request without charging credits.
Resolve friendly strings like company domains, countries, tags, and occupation taxonomy values before search.
Optional internal query budget hint. Omit unless instructed by support.
Built-in Search Modes
Facets, semantic title matching, and deep matching are all part of POST /v3/jobs/search. You do not need separate endpoints.
Capability Request field Use when Semantic title matching titles.vector: trueTitle intent is broader than exact keywords, such as platform operations engineer. Facets includeFacets: trueYour UI needs filter counts or summary metadata alongside the returned jobs. Deep matching mode: "deep"Standard filters are too strict and you need broader matching across searchable fields.
{
"titles" : {
"include" : [ "AI infrastructure engineer" ],
"vector" : true
},
"tags" : { "include" : [ "kubernetes" , "machine learning" ] },
"location" : { "countries" : [ "US" ] },
"includeFacets" : true ,
"mode" : "deep" ,
"includeDescription" : true ,
"limit" : 10 ,
"totalMode" : "capped"
}
Response
Company object with id, name, website_url, and (when available) linkedin_url.
Salary fields, including normalized USD ranges where available.
Published timestamp/date for the job.
Whether the job supports remote work.
signals[].application_url
Application URL for the job posting.
signals[].occupation_taxonomy.level1
Broad occupation taxonomy level with id and name.
signals[].occupation_taxonomy.level2
Mid-level occupation taxonomy level with id and name.
signals[].occupation_taxonomy.level3
Specific normalized title level with id and name.
Total matching jobs (bounded by totalMode).
Echoes the count mode used (none, capped, or exact).
Pagination wrapper with next_cursor for cursor-based pagination.
How input filters were resolved (only present when autoResolve: true).
Non-fatal notes about fallback behavior, unsupported combinations, or broad matching.
Query path describing how the search was executed, such as title+geo_bridge+vector_requested.
Finalized credits charged for this request.
Example Response
{
"signals" : [
{
"title" : "Full-Stack Software Engineer" ,
"company" : {
"id" : 102413 ,
"name" : "Example Company" ,
"website_url" : "https://example.com"
},
"occupation_taxonomy" : {
"level1" : { "id" : 1 , "name" : "Developer" },
"level2" : { "id" : 20 , "name" : "Full-Stack Development" },
"level3" : { "id" : 774 , "name" : "Full-stack software engineer" }
}
}
],
"total" : 3 ,
"totalMode" : "capped" ,
"credits_consumed" : 1
}
Helpers Resolve companies, tags, occupation taxonomy values, titles, locations, and catalogs.
Search Stats See coverage, capabilities, and top dimensions across Jobs, Company, and People Search.
Job Search v2 Previous jobs finder shape.
Your LeadMagic API key. Header name is case-insensitive (X-API-Key, X-API-KEY, x-api-key all work).
Include jobs posted within the last N days.
Cursor from pagination.next_cursor.
totalMode
enum<string>
default: capped
Available options:
none,
capped,
exact
Available options:
fast,
deep