Skip to main content
GET
/
signals
/
hiring
Get Hiring Signals
curl --request GET \
  --url https://www.trysignalbase.com/api/v2/signals/hiring \
  --header 'Authorization: Bearer <token>'
import requests

url = "https://www.trysignalbase.com/api/v2/signals/hiring"

headers = {"Authorization": "Bearer <token>"}

response = requests.get(url, headers=headers)

print(response.text)
const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};

fetch('https://www.trysignalbase.com/api/v2/signals/hiring', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));
<?php

$curl = curl_init();

curl_setopt_array($curl, [
CURLOPT_URL => "https://www.trysignalbase.com/api/v2/signals/hiring",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
package main

import (
"fmt"
"net/http"
"io"
)

func main() {

url := "https://www.trysignalbase.com/api/v2/signals/hiring"

req, _ := http.NewRequest("GET", url, nil)

req.Header.Add("Authorization", "Bearer <token>")

res, _ := http.DefaultClient.Do(req)

defer res.Body.Close()
body, _ := io.ReadAll(res.Body)

fmt.Println(string(body))

}
HttpResponse<String> response = Unirest.get("https://www.trysignalbase.com/api/v2/signals/hiring")
.header("Authorization", "Bearer <token>")
.asString();
require 'uri'
require 'net/http'

url = URI("https://www.trysignalbase.com/api/v2/signals/hiring")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'

response = http.request(request)
puts response.read_body
{
  "success": true,
  "data": [
    {
      "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
      "match_confidence": "exact",
      "jobId": "123456789",
      "jobUrl": "https://www.linkedin.com/jobs/view/123456789",
      "title": "Senior Software Engineer",
      "location": "San Francisco, CA",
      "city": "San Francisco",
      "region": "California",
      "jobCountry": "US",
      "datePosted": "2026-03-01T00:00:00.000Z",
      "validThrough": "2026-05-01T00:00:00.000Z",
      "employmentType": "Full-time",
      "seniorityLevel": "Mid-Senior level",
      "jobFunction": "Engineering",
      "industries": "Software Development",
      "numApplicants": "45",
      "descriptionText": "We are looking for a senior software engineer...",
      "createdAt": "2026-03-02T12:00:00.000Z",
      "companyId": "d4e5f6a7-b8c9-0123-defg-h45678901234",
      "companyName": "NextGen Software",
      "companyWebsite": "https://www.nextgensoftware.com",
      "companyIndustry": "Technology",
      "companyCountry": "US",
      "companySubcategory": "saas",
      "companyEmployeeCount": 250,
      "companyFoundedYear": 2018,
      "companyLogoUrl": "https://images.trysignalbase.com/nextgen.png",
      "companyDescription": "Enterprise software company.",
      "companySpecialties": "[\"Cloud\",\"SaaS\"]",
      "companyCategories": "[\"Technology\",\"Software\"]",
      "isFreeAccess": true,
      "companyLogo": "https://images.trysignalbase.com/nextgen.png"
    }
  ],
  "pagination": {
    "currentPage": 1,
    "totalPages": 50,
    "totalCount": 1000,
    "hasNextPage": true,
    "hasPreviousPage": false
  },
  "meta": {
    "endpoint": "signals.hiring",
    "creditsUsed": 1,
    "creditsRemaining": 999
  }
}
{
"success": false,
"error": "Invalid API key"
}
{
"success": false,
"error": "out of credits, please contact support to increase your usage"
}
{
"success": false,
"error": "Rate limit exceeded. Please try again later."
}
{
"success": false,
"error": "An unknown error occurred"
}

Authorizations

Authorization
string
header
required

API key authentication. Include as Bearer token in Authorization header.

Query Parameters

page
integer
default:1

Page number for pagination

Required range: x >= 1
limit
integer
default:20

Number of results per page (maximum 100)

Required range: 1 <= x <= 100
dateFrom
string<date>

Filter signals from this date (ISO 8601 format: YYYY-MM-DD)

dateTo
string<date>

Filter signals up to this date (ISO 8601 format: YYYY-MM-DD)

date_preset
enum<string>

Relative date shorthand. Takes precedence over dateFrom/dateTo.

Available options:
today,
yesterday,
last_7d,
last_14d,
last_30d,
last_60d,
last_90d,
last_6m,
last_1y,
last_2y,
this_week,
this_month,
this_quarter,
this_year,
last_week,
last_month,
last_quarter,
last_year

Free-text search across company name, industry, job title, location, and city

countries
string

Comma-separated list of country codes to filter by

states
string

Comma-separated US state codes to filter by

city
string

Free-text search on hiring signal city, location, and region

categories
string

Pipe-separated list of company industry categories to filter by

subcategories
string

Comma-separated list of subcategory IDs to filter by

positions
string

Comma-separated list of positions to filter by (e.g., ceo, cto, cfo, coo, vp of engineering, head of product, engineering manager, product manager, founder, co-founder)

departments
string

Comma-separated list of departments to filter by (e.g., marketing, sales, engineering, product, design, operations, finance, people, data, customer_success, growth, legal)

seniorities
string

Comma-separated list of seniority levels to filter by (e.g., founder, c_level, vp, director, head, lead, manager)

team_size
string

Comma-separated team size ranges (e.g., 1-10, 11-50, 51-200, 201-1000, 1000-plus)

applicants
string

Comma-separated applicant count ranges (e.g., 0-25, 26-50, 51-100, 101-200, 201-plus)

company_name
string

Search by company name (partial match, fuzzy). Prefer company_domain or company_linkedin_url for strict matching.

company_domain
string

Recommended. Company website domain, e.g. novartis.com. Strict match — if no company has this domain the result is empty; never falls back to fuzzy name matching. Variants are equivalent: novartis.com, www.novartis.com and https://novartis.com/ all match the same company. Malformed values return 400. Takes priority over company_name; combined identifiers must agree or the result is empty.

company_linkedin_url
string

Recommended. LinkedIn company URL, e.g. linkedin.com/company/novartis. Strict match — if no company has this LinkedIn page the result is empty; never falls back to fuzzy name matching. http/https, optional www. and trailing slash are equivalent. Non-company LinkedIn URLs (e.g. personal /in/ profiles) return 400. Takes priority over company_name; combined identifiers must agree or the result is empty.

sort_by
enum<string>
default:created_at

Field to sort by

Available options:
date_posted,
created_at,
title,
company_name,
location
sort_order
enum<string>
default:desc

Sort direction

Available options:
asc,
desc
count
enum<string>

When set to "true", returns only pagination metadata with an empty data array. No credits are charged.

Available options:
true

Response

Successful response with hiring signals

success
boolean
required
Example:

true

data
object[]
required
pagination
object
required
meta
object
required