# Authentication Source: https://api.tryspecter.com/api-ref/auth Specter’s API uses a **single, team‑level API key** so every call is tied to your firm’s workspace.  ### **Accessing Your Key** You can locate your API key in the [**API Console**](https://app.tryspecter.com/settings/api-console), where you can copy it directly to your clipboard. [******If you don’t see a key within your API Console:******](https://app.tryspecter.com/settings/api-console)\ Hit **Request API Access** and we’ll review and approve your request the same day, so you can start using your key right away. There is one API Key for the whole team. **Why only one key?**\ Most investment teams work collaboratively from one source of truth. A shared key keeps data permissioning straightforward while still enforcing rate and credit limits at the workspace level. ### **Keep your key secure** **Do not share your key publicly**\ It should be treated with the same level of confidentiality as a password, as possession of the key grants access to your firm’s data within the platform. ### **Make an authenticated query** Once the API key is obtained it can be used in a query by passing it as a header to the query: ```bash theme={null} curl -X 'GET' \ -H 'X-API-KEY: 1234-2345-3456-4567' \ -H 'accept: application/json' \ 'https://app.tryspecter.com/api/v1/lists' ``` ## **Data visibility** ### **Sharing to API** 1. Within the platform, go to **My Specter** → [Searches](https://app.tryspecter.com/searches/company) / [**Lists**](https://app.tryspecter.com/lists/company). 2. Navigate to the saved search you wish to use via the API. 3. Click the options menu **\[…]** and toggle **Share with API**. 4. The saved search can now be queried and managed by the API. Toggle off at any time to remove API access. **Lists and saved searches are limited to those visible by the API:** * Lists created via the API are automatically shared with the API and are immediately queryable. * Saved searches must have a unique name per user (you cannot create two with the same name). * Saved searches cannot be created via the API at this time. # Changelog Source: https://api.tryspecter.com/api-ref/changes Bookmark this page for all updates to the Specter API. Items here help both engineers and non‑technical stakeholders understand what changed, why it changed, and what (if anything) you need to do. ### **What we track here** * New or updated endpoints, parameters, or response fields * Deprecations and removals * Rate‑limit or credit‑limit policy updates ### **Questions or concerns?** If an update isn’t clear or you need help planning a migration, email us at [**support@tryspecter.com**](mailto:support@tryspecter.com). ## **Changes** New endpoints: ### Revenue Signals * [Get Revenue Signal by ID](/api-reference/revenue-signals/get-revenue-signal-by-id) — retrieve a single revenue (or profitability) signal by its Specter signal id (`rev_...`). Each signal corresponds to one observation derived from news coverage or a public filing — the revenue (or profitability) figures, the year they refer to, the source URL, and the company they are attributed to. * [List Revenue Signals](/api-reference/revenue-signals/list-revenue-signals) — list revenue (and profitability) signals, newest first. Each item is the same signal object returned by [Get Revenue Signal by ID](/api-reference/revenue-signals/get-revenue-signal-by-id). * [Get Revenue Signals for a company list](/api-reference/revenue-signals/get-revenue-signals-for-a-company-list) — returns every revenue signal attributed to the companies in a given list, newest first. Companies outside the list are excluded. Lists with more than 5,000 member companies are capped at that limit; unknown or non-visible lists return `404`. * [Get Revenue Signals for a saved company search](/api-reference/revenue-signals/get-revenue-signals-for-a-saved-company-search) — returns every revenue signal attributed to the companies returned by a saved company search, newest first. Date-range queries live inside the saved search itself. Searches matching more than 5,000 companies are capped at that limit; unknown or non-visible searches return `404`. Behavior common to both: * `new=true` restricts the results to signals published in the current week. * Supports `limit`/`page` pagination. These endpoints use 10 credits per signal returned. ### Credit-limit responses now return `402` Running out of credits now returns **HTTP 402** instead of **HTTP 429**, so you can distinguish being credit‑limited from being rate‑limited: * `402` with errorCode `OUT_OF_CREDITS` — your team has no credits left for the current billing period. The response carries the `X-CreditLimit-*` headers, including `X-CreditLimit-Reset` with the seconds until credits renew. * `429` with errorCode `RATE_LIMITED` — unchanged; you sent too many requests per second. **What you need to do:** if your integration treats `429` as "out of credits", update it to handle `402` for that case. Retry-on-`429` logic can stay as is. ### Bulk Endpoints New endpoints — **bulk variants** of the existing lookup and enrichment endpoints. Each accepts up to 50 identifiers in a single request, so you can resolve many records in one call instead of issuing them one at a time. For lookup endpoints, unknown identifiers are silently omitted; for enrichment endpoints each row carries a `found`/`queued` status (see the entry). Each uses 1 credit per record returned (misses/`queued` rows are not charged). ### Enrichment * [Bulk enrich companies by ID](/api-reference/enrichment/bulk-enrich-companies-by-id) — bulk counterpart to [Enrich companies](/api-reference/enrichment/enrich-companies); resolve companies by website, domain, LinkedIn URL/ID, or Crunchbase URL. Each row carries a `status` of `found` (with the `company` payload) or `queued` (an enrichment was started for an unknown company); only `found` rows are charged. * [Bulk enrich people by ID](/api-reference/enrichment/bulk-enrich-people-by-id) — bulk counterpart to [Enrich people](/api-reference/enrichment/enrich-people); resolve people by LinkedIn URL/ID/URN. Each row carries a `status` of `found` (with the `person` payload) or `queued` (async enrichment started); only `found` rows are charged. * [Bulk reverse email lookup](/api-reference/enrichment/bulk-reverse-email-lookup) — bulk counterpart to [Reverse email lookup](/api-reference/enrichment/reverse-email-lookup); reverse-lookup people from email addresses. ### Companies * [Bulk get similar companies by ID](/api-reference/companies/bulk-get-similar-companies-by-id) — bulk counterpart to [Get similar companies](/api-reference/companies/get-similar-companies); find lookalike companies for multiple seed company IDs at once. ### Investors * [Bulk get investors by ID](/api-reference/investors/bulk-get-investors-by-id) — look up investors by website or name. ### Talent and Interest Signals * [Bulk get Talent Signals by ID](/api-reference/talent-and-interest-signals/bulk-get-talent-signals-by-id) — bulk counterpart to [Get Talent Signal](/api-reference/talent-and-interest-signals/get-talent-signal-by-id); fetch talent signals by ID. Duplicate IDs are honored. * [Bulk get Investor Interest Signals by ID](/api-reference/talent-and-interest-signals/bulk-get-investor-interest-signals-by-id) — bulk counterpart to [Get Investor Interest Signal by ID](/api-reference/talent-and-interest-signals/get-investor-interest-signal-by-id); fetch investor interest signals by ID. Duplicate IDs are honored. ### Name based search for companies, people and investors Name-based search across companies, people and investors. Each search endpoint takes a required `query` string (minimum 3 characters), returns up to 10 lightweight results sorted by descending `match_confidence`, and uses 1 credit per request regardless of how many matches come back. Chain the corresponding `GET /{id}` endpoint on any result for the full profile. ### People search [Search person name](/api-reference/people/search-person-name) — fuzzy search for people by name. Returns up to 10 candidates, each with `id`, `full_name`, `headline`, `linkedin_url`, `profile_picture_url`, `current_company_name`, and a `match_confidence`. Only matches scoring at least 0.5 are returned; no match returns an empty list. This is a catalogue search and never triggers enrichment — to enrich a brand new LinkedIn identifier, keep using [Enrich people](/api-reference/enrichment/enrich-people). ### Investor search [Search investor name](/api-reference/investors/search-investor-name) — fuzzy search for investors by name. Returns up to 10 candidates, each with `id`, `name`, `domain`, `hq_location`, `founded_year`, `type`, and a `match_confidence`. Only matches scoring at least 0.5 are returned. [Look up investors](/api-reference/investors/look-up-investors) (lookup by website / exact name) is unchanged. ### Company search [Search company name](/api-reference/companies/search-company-name) now returns a `match_confidence` on every result and applies the same 0.5 threshold, so weak matches no longer appear. ### A note on `match_confidence` All three endpoints expose `match_confidence` on a 0–1 scale, but they are derived differently. Investor search uses trigram similarity, which is **absolute** — scores are comparable across separate calls. People and company search scores are **relative** to the results within a single response and should not be compared between calls. New endpoints: ### Network Mapping Three new endpoints expose your team's LinkedIn network — the people your teammates are connected to, deduped across the team, and the companies they work at. Use them to find a warm path into a target company or to surface who on your team already knows a given contact. * [Get people in your team's network](/api-reference/network/get-people-in-your-teams-network) — returns all people your team is connected to on LinkedIn, deduped across teammates. Each result includes which teammates hold the connection. Supports `limit`/`page` pagination and a `connected_on` filter (only `linkedin` is supported today). * [Get companies in your team's network](/api-reference/network/get-companies-in-your-teams-network) — returns all companies where someone in your team's network currently works, ordered by number of connections at each company. Each result includes the person IDs of your contacts there. Supports `limit`/`page` pagination and a `min_connections` filter to only return companies with at least that many network contacts. * [Get your team's network at a company](/api-reference/network/get-your-teams-network-at-a-company) — returns your team's connections at a specific company: who you know there, what roles they hold, and which teammates are linked to them. Returns `404` when your team has no connections at the requested company. Each endpoint uses 1 credit per request. ### Organization [List your team's members](/api-reference/organization/list-your-teams-members) — returns all active members of your team: their user ID, role (`admin` or `member`), name, and email. Suspended users are excluded. Supports `limit`/`page` pagination. The `user_id` field matches the `connected_teammates` values returned by the Network endpoints, so you can use it to resolve teammate IDs back to a named person. This endpoint uses 1 credit per request. New endpoints: ### News Signals * [Get News Signal by ID](/api-reference/news-signals/get-news-signal-by-id) — retrieve a single news signal by its integer Specter signal id. A news signal represents one classified company mention within a single article; when an article mentions multiple companies, each company yields its own signal. * [Get News Signals for a company](/api-reference/news-signals/get-news-signals-for-a-company) — returns a company's full news signal history in reverse chronological order (most recent first). Supports `limit`/`page` pagination and a `major_only` toggle that restricts results to signals with importance score ≥ 4. Each signal includes the underlying article (id, URL, title, published date, featured image), the kinds of `meaningful_updates` detected (revenue, profitability, traction, funding, deals), an AI-generated summary of what's new, and an importance score on a 0–5 scale. New endpoints: ### Investor lookup [Look up investors](/api-reference/investors/look-up-investors) — look up Specter investor records by `website` and/or `name` query parameters. Returns the matching investor records with full detail (profile, activity, targeting, funds, portfolio companies). Use it to resolve an inbound mention of an investor — a domain on a deck, a firm name in a press release — to the canonical Specter ID for downstream calls. Behavior: * The endpoint returns a **list** of investors. A lookup can match more than one investor (e.g. multiple firms sharing a domain), so the endpoint returns all matches. * When no investor matches, the response is `404 Not Found`. * Query parameters: provide at least one of `website` or `name`. Supplying both narrows the match. Missing both returns `422`. New endpoints: ### Investors [Get investor by ID](/api-reference/investors/get-investor-by-id) — returns the full Specter investor record for a single investor ID, including profile, targeting, funds, and portfolio companies. Useful for enriching a known investor, pulling portfolio company IDs for downstream calls, or inspecting targeting (industries, verticals, stages) before outreach. ### Investor saved searches * [Get investor saved search details](/api-reference/investor-saved-searches/get-investor-saved-search-details) — returns the name, query ID, and total matched-investor count for a saved investor search. Use it to confirm a search is bound to the expected query, or to surface counts in a UI without fetching results. * [Get investor saved search results](/api-reference/investor-saved-searches/get-investor-saved-search-results) — returns the investors matching a saved investor search with full detail (profile, activity, targeting, funds, portfolio companies). Supports `limit` (default 50, max 5000) and `page` (0-indexed). ### Investor lists * [Get all investor lists](/api-reference/investor-lists/get-all-investor-lists) — returns all investor lists created with the API, shared with the API, or shared globally, including the count of investors in each list. * [Create a new investor list](/api-reference/investor-lists/create-a-new-investor-list) — create a new investor list. * [Get specific investor list info](/api-reference/investor-lists/get-specific-investor-list-info) — retrieve details of a specific investor list, including the investor IDs it contains. * [Modify an investor list](/api-reference/investor-lists/modify-an-investor-list) — modify an existing investor list. * [Delete an investor list](/api-reference/investor-lists/delete-an-investor-list) — delete an investor list. * [Get investor list results](/api-reference/investor-lists/get-investor-list-results) — returns the investors in a specific list along with their current profile, activity, and targeting data. The list must be of product type `investors` and must be shared with the API or created by the API. ### Transactions Three new typed resources cover the company-level transaction history — funding rounds, acquisitions, and IPOs — that used to require bulk delivery. Use these to look up a transaction referenced from another API response, audit an investor's recent activity, or stitch a company's funding history into your CRM without round-tripping through bulk exports. ### Funding rounds * [Get funding round by ID](/api-reference/transactions/get-funding-round-by-id) — a single round with its raising company and full investor list (lead flagged). * [Get company funding rounds](/api-reference/companies/get-company-funding-rounds) — paginated funding history for one company. * [Get investor funding rounds](/api-reference/investors/get-investor-funding-rounds) — paginated list of rounds an investor has participated in. ### Acquisitions * [Get acquisition by ID](/api-reference/transactions/get-acquisition-by-id) — a single acquisition with acquirer and acquiree context. * [Get company acquisitions](/api-reference/companies/get-company-acquisitions) — acquisitions where the given company is the acquirer. ### IPOs * [Get IPO by ID](/api-reference/transactions/get-ipo-by-id) — a single IPO with the issuing company, exchange and ticker symbol, listing date, and proceeds in USD. * [Get company IPOs](/api-reference/companies/get-company-ipos) — IPOs by company. New endpoints: ### API Call Logs [List API call logs](/api-reference/customer-data/list-api-call-logs) — returns a paginated list of API calls made by your organization, ordered by most recent first. Use it to audit which endpoints your integration is hitting, debug failed calls by inspecting HTTP status codes and paths, and monitor usage trends across your team. **Parameters:** * `limit` / `page` — pagination controls * `from` / `to` — date range filter for log entries **Response fields per entry:** * `timestamp` — UTC timestamp of the call * `path` — request path (e.g. `/v1/companies`) * `url` — full URL including query string * `http_method` — HTTP verb used * `http_status` — HTTP status code returned * `status` — logical status (`ok` or `error`) * `query` — query parameters sent with the request (nullable) New parameters: ### Talent search results & Investor Interest search results Both endpoints now accept a `new` query parameter (boolean, default `false`). When set to `true`, results are restricted to signals from the current week, overriding any `SignalDate` filter that is stored in the saved search. This is equivalent to applying a "This week" signal date filter without modifying the saved search itself — useful for polling integrations that always want the latest batch of signals. Affected endpoints: * [Get Talent Signals saved search results](/api-reference/talent-signals-saved-searches/get-talent-signals-saved-search-results) * [Get Investor Interest Signals saved search results](/api-reference/investor-interest-saved-searches/get-investor-interest-signals-saved-search-results) New fields: ### Company response * Pitchbook URL - company.socials.pitchbook.url * Crunchbase URL - company.socials.crunchbase.url * HQ regions - company.hq.regions * HQ continent - company.hq.continent * Glassdoor data - company.glassdoor * Glassdoor rating metrics - company.traction\_metrics.glassdoor\_rating * Glassdoor reviews metrics - company.traction\_metrics.glassdoor reviews ### Talent response * Signal Summary - talent.signal\_summary * Experience * * Industry - talent.experience\[].industry * * Tech Verticals - talent.experience\[].tech\_verticals * New position industry - talent.new\_position\_industry * New position tech verticals - talent.new\_position\_tech\_verticals * Is new position industry estimated - talent.is\_new\_position\_industry\_estimated ### Investor Interest response * Signal Summary - investor\_interset.signal\_summary * Person * * Industry - investor\_interest.person.industry * * Tech Verticals - investor\_interest.person.tech\_verticals * * Is industry estimated - investor\_interest.person.is\_industry\_estimated * Company * * Industry - investor\_interest.company.industry * * Tech Verticals - investor\_interest.company.tech\_verticals * * Is industry estimated - investor\_interest.company.is\_industry\_estimated * * Customer Focus - investor\_interest.company.customer\_focus Deprecated fields: ### Company response * HQ region: Move to company.hq.continent Features: ### Enrich/Get Person * People can now be retrieved via the `linkedin_num_id` and the `linkedin_urn`. New fields: ### Person responses * linkedin\_urn: The URN of the person being returned, can be empty. New fields: ### Person responses * linkedin\_num\_id: Can be used to link a person to a URN. * last\_updated: A timestamp of when the person was last updated in the Specter dataset. New endpoints: ### [Reverse email lookup](/api-reference/enrichment/reverse-email-lookup) Which can be used when you have an email address and need to resolve it to a Specter person record so you can standardize contacts, enrich them, or link inbound emails to the correct individual in our database. ### [Text search](/api-reference/enrichment/text-search) Turn unstructured text—press releases, bios, notes—into structured entity references you can track, enrich, and join to your downstream systems. New endpoints added that give the ability to query for investor interest signals. New endpoint added which gives the ability to [Search company name](/api-reference/companies/search-company-name) and get back basic information for them given a query term. Two new fields have been added to all endpoints which return companies.0 * founders\_info: Gives more information about the founders including the `specter_person_id` which allows for the person to be looked up either in the App, or via the People API. * `specter_strategic_signal_ids`: which indicate strategic signals related to the company. Added a new filter to the [Get company people](/api-reference/companies/get-company-people) endpoint allowing anyone that is a CEO to be returned. This new filter can only be used on its own and `founders` and `department` won't be taken in to account with this filter. Updated all search and list endpoints to work with a new Share to API toggle. This allows lists and searches to be shared with the API without sharing them with the team. A new endpoint for [Get person's email](/api-reference/people/get-persons-email) has been released which allows you to retrieve the professional or personal email address for a person based on their ID. Added endpoints for enrichment of people, which will notify us if there are people we do not have so we can retrieve them. Added endpoints for People and Talent Signals, allowing you to manage and get both using the API. Added [Get similar companies](/api-reference/companies/get-similar-companies) which returns a list of ids for companies that are similar to the company id being requested. This helps you uncover high-potential companies similar to the one you're referencing and is a powerful way to identify new opportunities, uncover competitors, or expand your investment pipeline with minimal effort. First release of the API including: * Enrichment API - Querying to get companies based on parameters * LinkedIn url * LinkedIn Id * domain * etc * Companies API - Get companies by Specter ID or list and manage lists. * Searches API - Get all available searches and query for companies by search ID. # Errors Source: https://api.tryspecter.com/api-ref/errors Specter returns all error responses as JSON so you can programmatically detect, log, and fix problems seamlessly. ### Example ```json theme={null} { "errorCode": "API_KEY_MISSING", "message": "No API Key was presented on the header X-API-KEY", } ``` **errorCode** – machine‑readable identifier **message** – human‑friendly explanation with a potential fix‑it hint ### **Common HTTP status codes** | Code | Comment | | ----- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `400` | There was a problem with the request, it may be missing a field or a have a malformed field. This will not credit limit you, but will rate limit you. | | `401` | The request is unauthenticated, the API key was supplied, but it is not a valid key. In this case please check your key and try again, if it continues then contact support. | | `402` | Returned with an errorCode of `OUT_OF_CREDITS` when your team has no credits left for the current billing period. Check the `X-CreditLimit-Reset` header for when credits renew, or contact support to increase your allowance. | | `403` | Your API key is correct, but you do not have access to this endpoint. This may happen if your subscription plan does not allow you access to the endpoints. For instance if you are not signed up to the company API but try to access it. | | `404` | If the requested resource does not exist then this will be returned. | | `422` | If there was a problem with validation then this will be returned, the `message` field of the response will have information about how to fix this, if this does not help then please contact Specter support. | | `429` | Returned if you have been rate limited, i.e. you sent too many requests per second. Check the `X-RateLimit-Reset` header for when the limit resets. | | `50x` | There was an internal error, in this case we will not credit limit you, but we may have rate limited you | # Introduction Source: https://api.tryspecter.com/api-ref/introduction This documentation is designed to be a practical, hands‑on guide. Whether you're a developer building a new integration, a data scientist enriching a model, or a product manager exploring possibilities, you'll find everything you need right here. If you have any questions, encounter issues, or have feedback, please don't hesitate to contact us at [**support@tryspecter.com**](mailto:support@tryspecter.com). Let's get started. ## **Getting access** Request an API key from the [**API Dashboard.**](https://app.tryspecter.com/settings/api-console) Requests are approved within one business day; you’ll receive a confirmation email when your key is ready. ## **API Plans** ### Enrichment API Streamlined enrichment for users who don’t need the full Specter platform or universal search. **What you get** * Targeted enrichment of a provided list of companies or individuals (e.g., from your CRM or dealflow) * **Included endpoints:** * `POST` Get/Enrich companies * `POST` Get/Enrich people * No web app seat is required for the Enrichment API. **Example use case** A growth team has 2,000 leads in their CRM. They use the Enrichment API to append funding rounds, headcount growth, and key executive profiles to those records by sending domains or person identifiers and receiving Specter’s enriched data in response. ### Full API Comprehensive programmatic access to Specter’s data and workflow features. **What you get** * **Complete data access** * Company & People Databases * Proprietary feeds: Talent Signals & Interest Signals * **Workflow automation** * Create and save searches and lists * Retrieve all search results programmatically * Subscribe to new results or updates as they occur * **Featured endpoints** * Retrieve verified emails * Pull similar companies * Additional endpoints are added on an ongoing basis > **Requirement:** To use the Full API, you must have **at least one seat** on the Specter web app. This enables you to manage searches and lists in the UI and pull all results via API. **Example use case** A fund tracks AI startups in Europe raising capital, monitors talent flows from Google into these companies, and obtains founder email contacts. With the Full API, the fund can save searches, subscribe to updates, and programmatically join company, people, and signal data into its internal dealflow pipeline. # Lists & Searches Source: https://api.tryspecter.com/api-ref/lists_and_searches Use **lists** and **saved searches** to group Companies, People or Talent Signals so they can be queried via the API. Currently any saved search or list shared with the team will also be managed by\ the API, though this will be removed in the near future. ### Access & visibility A search / list is available to the API if **any** of the following is true: * It was **created by the API** (lists only). * It is **shared with the API** via the UI toggle. * It is **shared globally by Specter**. ### **Sharing to API** 1. Within the platform, go to **My Specter** → [Searches](https://app.tryspecter.com/searches/company) / [**Lists**](https://app.tryspecter.com/lists/company). 2. Navigate to the saved search you wish to use via the API. 3. Click the options menu **\[…]** and toggle **Share with API**. 4. The saved search can now be queried and managed by the API. Toggle off at any time to remove API access. ### **Saved Searches** * You **cannot create** saved searches via the API (currently). * You **can query and use** saved searches that are shared with the API or shared globally by Specter. ### **Lists** A list is available to the API if it was **created by the API**, **shared with the API**, or **shared globally by Specter**. ### **Create a list via the API** * You can create lists using the **POST endpoints** for each product type: [**Companies**](https://api.tryspecter.com/api-ref/companies-lists/create-a-new-company-list), [**People**](https://api.tryspecter.com/api-ref/people-lists/create-a-new-people-list), and [**Talent Signals.**](https://api.tryspecter.com/api-ref/talent-lists/create-a-new-talent-list) (These will be automatically shared with the API) * **Ownership:** When a list is created via the API, it is owned by the **first team admin** in your organization. # LLMs.txt Source: https://api.tryspecter.com/api-ref/llms Machine-readable documentation for LLMs and AI agents. Specter's documentation is published in formats designed for large language models and AI agents, so tools can read the API reference directly. * [llms.txt](https://api.tryspecter.com/llms.txt) — a structured index of every page in this documentation, with links and short summaries. Point an LLM or agent here first to discover what's available. * [llms-full.txt](https://api.tryspecter.com/llms-full.txt) — the full text of the documentation in a single file, for tools that want everything in one request. These files are generated automatically and stay in sync with the docs. Every page is also available as Markdown by appending `.md` to its URL — for example, `https://api.tryspecter.com/api-ref/introduction.md`. You can also use the **Copy page** and **View as Markdown** options, or send a page straight to ChatGPT, Claude, or Perplexity, from the menu at the top of any page. # Pagination Source: https://api.tryspecter.com/api-ref/pagination **Pagination** lets you retrieve large result sets in pages instead of one large response. This keeps requests fast and reliable, and reduces memory and timeout risk. Use the pagination parameters for each endpoint to request the next page until there are no more results. Remember that each page is a separate request that counts toward your rate limits (and any applicable credits), so choose a reasonable page size. ### **How it works** **Pagination uses two query parameters:** * `page` — zero‑based page index (use 0 for the first page) * `limit` — number of items to return on that page **Defaults (if not specified):** * `page`: 0 * `limit`: 50 Pagination starts at `page=0` because most programming contexts use zero-based indexing. This keeps the logic consistent with common programming conventions and makes the code easier to reason about on both our side and yours. **Upper bound:** * `limit`: 5000 We use upper-bound limiting to break a potentially huge result set into smaller, faster queries, which keeps response times low and prevents timeouts when working with large datasets. ### **Example** If you have access to a search with ID **5432** and you want the **second 500 results**, request page 1 with a limit of 500: ``` https://app.tryspecter.com/api/v1/searches/5432/results?page=1&limit=500 ``` # Rate Limits & Credit Limits Source: https://api.tryspecter.com/api-ref/rate_limits ## Rate Limits To keep responses fast for everyone, Specter enforces a per‑API‑key rate limit of 15 requests per second. If you exceed this limit, the request is rejected with HTTP 429 (Too Many Requests). ### **Example** If you send **16 requests within 0.5 seconds**, the 16th request will be rate‑limited. You’ll need to wait about **0.5 seconds** (until the one‑second window resets) before sending another request. ### **Response headers** Every query response includes the following headers so you can monitor and throttle your usage: * **X-RateLimit-Limit –** Max number of requests allowed per second for your key * **X-RateLimit-Remaining –** Requests left in the current second * **X-RateLimit-Reset –** Seconds (decimal) until the limit resets ## Credit Limits Credits control how many result‑returning queries your API key can make during a billing period, based on your Specter subscription. Credits are shared across endpoints that return results (e.g., companies, people, emails, etc.). ### **Billing period & renewals** * When your API key is issued, you’re assigned a monthly credit allowance. * Your period renews on the same day each month (or on the last day of shorter months). Eg. If your renewal date is the 30th or 31st, your February reset occurs on the 28th. ### Basic credit allowance * Allowance is **per team** (not per team member) and is shared across all endpoints that return results. * Credits **reset on your team’s monthly renewal date** and **do not roll over** between periods. ### **How credits are used** * Credits are consumed when you call endpoints that return results. * **Example:** with a limit of 100 credits, if you first query to get search info and then request 48 results for that search, you’ll use 48 credits and have 52 remaining. * Most endpoints consume **1 credit per successful result returned.** ### **Response headers (credit‑metering)** Any query that is subject to credit limiting includes these headers in the response: * **X-CreditLimit-Limit** – Total number of credits available this period * **X-CreditLimit-Remaining** – Credits left in the current period * **X-CreditLimit-Reset** – Seconds (decimal) until credits reset ### **Need more credits?** If all credits are used, further requests return **HTTP 402** with an errorCode of **OUT\_OF\_CREDITS**, indicating you’ve been **credit‑limited**. The response includes the X-CreditLimit-\* headers above so you can tell when credits renew. Wait until the reset time indicated by X-CreditLimit-Reset, or email [**support@tryspecter.com**](mailto:support@tryspecter.com) to increase your allowance. # Bulk get similar companies by ID Source: https://api.tryspecter.com/api-reference/companies/bulk-get-similar-companies-by-id /api-ref/bundle_api.yaml post /companies/similar/by-id/bulk Find lookalike companies for up to 50 seed companies in a single request. This is the bulk counterpart to `GET /companies/{companyId}/similar` — pass a list of seed company IDs and get back the similar company IDs for each. Each result pairs a seed `company_id` with the `similar_company_ids` matched for it (which may be empty). Unknown seed IDs are omitted; the response order is not guaranteed. This endpoint uses 1 credit per resolved seed company returned. # Get company acquisitions Source: https://api.tryspecter.com/api-reference/companies/get-company-acquisitions /api-ref/bundle_api.yaml get /companies/{companyId}/acquisitions **What it does** Returns a paginated list of acquisitions that involve the company, whether the company was the **acquirer** (an outbound deal) or the **acquiree** (an inbound deal). Both sides of each deal are surfaced on every row so the consumer can tell which direction it was. **Why you'd use it** Build a complete M&A timeline for a company: when it bought others, and when (if ever) it was itself acquired. Each row's `acquirer_company_id` and `acquiree_company_id` can be chained to `GET /companies/{companyId}` for the other party. **Key behaviors** - Either-side semantics: a single company may appear as `acquirer` on some rows and `acquiree` on others. - Results are ordered by `acquisition_date` descending, with nulls last. - If the company does not exist, the endpoint returns 404 Not Found. - If the company exists but has no acquisitions on either side, the endpoint returns `200 OK` with an empty array — not 404. The maximum `limit` for this endpoint is 1000. This endpoint uses 1 credit per request. # Get company funding rounds Source: https://api.tryspecter.com/api-reference/companies/get-company-funding-rounds /api-ref/bundle_api.yaml get /companies/{companyId}/funding-rounds **What it does** Returns a paginated list of the funding rounds a company has raised. Each item includes the round detail and the full set of participating investors (with a lead flag). **Why you'd use it** - Build a company's full fundraising history. - Identify the lead investor and co-investors on each round. - Sync round-level data into your CRM or warehouse for diligence. **Key behaviors** - Path param: `companyId` (Specter company ID) is required. - Ordered by `announced_on` descending (most recent first); rounds with no announced date are returned last. - Pagination: `limit` defaults to 50 and is capped at 1000. - Returns `404 Not Found` if the company does not exist. # Get company info by ID Source: https://api.tryspecter.com/api-reference/companies/get-company-info-by-id /api-ref/bundle_api.yaml get /companies/{companyId} **What it does** Returns the most up-to-date company record for a single Specter company ID. **Why you’d use it** Enrich or refresh a known company in your system (for scoring, diligence, or CRM/warehouse sync) by referencing its ID. **Key behaviors** - Path param: company_id (Specter company ID) is required. - Response: a single company object with the latest data available. - Not found: returns 404 Not Found if the company doesn’t exist. This endpoint uses 1 credit per request. # Get company IPOs Source: https://api.tryspecter.com/api-reference/companies/get-company-ipos /api-ref/bundle_api.yaml get /companies/{companyId}/ipos **What it does** Returns a paginated list of IPOs for the company. Most companies will have zero or one IPO; dual-listed or re-listed companies may have more than one. **Why you'd use it** Detect whether a company is publicly traded and on which exchange, and enrich historical listing details on demand. **Key behaviors** - Results are ordered by `went_public_on` descending, with nulls last. - If the company does not exist, the endpoint returns 404 Not Found. - If the company exists but has no IPOs, the endpoint returns `200 OK` with an empty array — not 404. The maximum `limit` for this endpoint is 1000. This endpoint uses 1 credit per request. # Get company people Source: https://api.tryspecter.com/api-reference/companies/get-company-people /api-ref/bundle_api.yaml get /companies/{companyId}/people **What it does** This endpoint helps you uncover the people that work for a company, both founders and employees. The people returned can be used to get more information using the `people_id` and the Get Person info by ID endpoint. **Why you'd use it** Identify key contacts for outreach or diligence, then fetch full profiles using their people_id **Filters** - founders — return founders only. - department — narrow to a specific function. - ceo=true — return only CEOs (can be multiple). **These filters can be combined** **Key behaviors** - If the company does not exist, the endpoint returns 404 Not Found. The limit for this endpoint is 100. This endpoint uses 1 credit per request. # Get similar companies Source: https://api.tryspecter.com/api-reference/companies/get-similar-companies /api-ref/bundle_api.yaml get /companies/{companyId}/similar **What it does** Returns companies similar to a referenced company (by Specter company ID) as a list of Specter IDs. **Why you'd use it** Find lookalikes to expand sourcing, map competitors, or widen a thesis-aligned pipeline with minimal effort. **Key behaviors** - Path param: company id (Specter ID) is required; if the company doesn’t exist, returns 404 Not Found. - Response: array of Specter company IDs. Use the Companies API to fetch full details. - Filter: optional growthStage query parameter to restrict results by stage. - No matches: returns an empty list. The limit for this endpoint is 100. This endpoint uses 1 credit per request. # Search company name Source: https://api.tryspecter.com/api-reference/companies/search-company-name /api-ref/bundle_api.yaml get /companies/search **What it does** Returns any companies which match the given `query` term. **Why you'd use it** To look for companies that might match a given name or domain. **Key behaviors** - Query: required URL parameter with the term to use for the search. - Response: array of basic Specter company information. Use the Companies API to fetch full details. - No matches: returns an empty list. The limit for this endpoint is 10. This endpoint uses 1 credit per request. # Create a new company list Source: https://api.tryspecter.com/api-reference/company-lists/create-a-new-company-list /api-ref/bundle_api.yaml post /lists/companies **What it does** Creates a new list of companies that is shared with the API and returns the new list’s id. **Why you'd use it** Programmatically build and maintain sourcing/diligence shortlists (e.g., thesis- or region-based cohorts such as “European B2B DeepTech”) **Key behaviors** - Add companies at creation by passing their company IDs, or add them later via the PATCH endpoint for that list id. - The list owner will be the first team admin added to the account. - You cannot create two lists with the same name. List names must be unique; if a name already exists, rename the existing list or choose a new name. # Delete a company list Source: https://api.tryspecter.com/api-reference/company-lists/delete-a-company-list /api-ref/bundle_api.yaml delete /lists/companies/{listId} Permanently delete a company list and all its associated data. This action cannot be undone. The list must be shared with the API, and when deleted will be removed from the users lists. # Get all company lists Source: https://api.tryspecter.com/api-reference/company-lists/get-all-company-lists /api-ref/bundle_api.yaml get /lists/companies **What it does** Returns all the company lists created with the API, shared with the API or shared globally. **Why you'd use it** Discover which lists you can work with and see their sizes before fetching associated data. **Key behaviors** - Each list object include the number of companies in the list - To retrieve the company IDs in a list, call the corresponding GET endpoint using that list's id # Get company list results Source: https://api.tryspecter.com/api-reference/company-lists/get-company-list-results /api-ref/bundle_api.yaml get /lists/companies/{listId}/results **What it does** Returns the companies in a specific list along with their current data and signals. You can optionally return only companies with new growth or new funding activity. **Why you'd use it** Run scheduled analyses on a curated cohort—e.g., refresh scores, surface new signals, or trigger alerts for targets in your list. **Key behaviors** - Query filters: set newGrowthHighlights and/or newFundingHighlights to return only companies with recent growth/funding changes. - Path param: list_id must be a UUID; otherwise the API returns 400 Bad Request. The list must be shared with the API or created by the API. This endpoint uses 1 credit per company returned. If the endpoint returns 10 companies then 10 credits are consumed. # Get specific company list info Source: https://api.tryspecter.com/api-reference/company-lists/get-specific-company-list-info /api-ref/bundle_api.yaml get /lists/companies/{listId} Returns information about a company list which is created or shared with the API, including the companies that are part of the list. # Modify a company list Source: https://api.tryspecter.com/api-reference/company-lists/modify-a-company-list /api-ref/bundle_api.yaml patch /lists/companies/{listId} **What it does** Adds and/or removes company IDs from an existing company list in a single request. **Why you'd use it** Keep a sourcing or diligence shortlist in sync programmatically (e.g., bulk update members as your pipeline changes) **Key behaviors** - Provide add_ids and delete_ids in the request body; you can send either or both in the same call. - Operations run in order: add first, then remove. If an ID appears in both arrays, it will not be in the list after the update. - To create a new list and add companies in one step, use the POST Create a new company list endpoint. - The list_id must be a UUID; otherwise a 400 Bad Request is returned. The list must be shared with the API to be modifiable. # Get company saved search details Source: https://api.tryspecter.com/api-reference/company-saved-searches/get-company-saved-search-details /api-ref/bundle_api.yaml get /searches/companies/{searchId} **What it does** Returns summary details for a saved company search—including the total companies matched, the number of newly added companies, and the count of companies with highlights. **Why you'd use it** Quickly gauge the impact of a saved search (and whether there’s fresh activity) before deciding to pull full results. **Filters** - new — only companies first seen in this saved search. - newGrowthHighlights — only companies with new growth changes. - newFundingHighlights — only companies with new funding changes. **Key behaviors** - This endpoint returns counts only (no per-company records). Use the Get Company saved search results endpoint to fetch companies. The saved search must be shared with the API, or shared globally by Specter to be queried. # Get company saved search results Source: https://api.tryspecter.com/api-reference/company-saved-searches/get-company-saved-search-results /api-ref/bundle_api.yaml get /searches/companies/{searchId}/results **What it does** Retrieve the results of a saved company search. This endpoint provides access to the companies that match your search criteria, allowing you to analyze and work with the data programmatically. **Why you'd use it** - Pull the latest companies matching a thesis so you can score, enrich, and route them to your pipeline. - Schedule a nightly fetch of new matches to keep sourcing dashboards and models current. **Filters** - new — only companies first seen in this saved search. - newGrowthHighlights — only companies with new growth changes. - newFundingHighlights — only companies with new funding changes. To use a saved search it must be shared with the API, created by the API, or shared globally by Specter. This endpoint uses 1 credit per company returned. If the endpoint returns 10 companies then 10 credits are consumed. # List API call logs Source: https://api.tryspecter.com/api-reference/customer-data/list-api-call-logs /api-ref/bundle_api.yaml get /logs **What it does** Returns a paginated list of API calls made by your organization, ordered by most recent first. **Why you'd use it** - Audit which endpoints your integration is hitting and how often. - Debug failed calls by inspecting HTTP status codes and paths. - Monitor usage trends across your team's API integrations. # Bulk enrich companies by ID Source: https://api.tryspecter.com/api-reference/enrichment/bulk-enrich-companies-by-id /api-ref/bundle_api.yaml post /companies/by-id/bulk Resolve up to 50 companies in a single request. This is the bulk counterpart to `POST /companies` — pass a JSON array of lookup objects (1–50), each identifying one company by website, domain, LinkedIn URL, LinkedIn numeric ID, or Crunchbase URL. Provide exactly one identifier per lookup object. The response preserves input order so you can map each result back to its lookup. Each result row carries a `status`: `found` (resolved from cache, with the `company` payload) or `queued` (the company wasn't found and an enrichment was kicked off; poll later). Enrichment is supported for `domain`/`website_url` and `linkedin_url` lookups; `linkedin_id` and `crunchbase_url` misses come back `queued` without a tracking id. This endpoint uses 1 credit per `found` result. `queued` rows are not charged here — the eventual enrichment is billed by the async pipeline. # Bulk enrich people by ID Source: https://api.tryspecter.com/api-reference/enrichment/bulk-enrich-people-by-id /api-ref/bundle_api.yaml post /people/by-id/bulk Resolve up to 50 people in a single request. This is the bulk counterpart to `POST /people` — pass a JSON array of lookup objects (1–50), each identifying one person by LinkedIn URL, vanity ID, numeric ID, or URN. Provide exactly one identifier per lookup object. The response preserves input order so you can map each result back to its lookup. Each result row carries a `status`: `found` (resolved from cache, with the `person` payload) or `queued` (an asynchronous enrichment was kicked off; poll later). This endpoint uses 1 credit per `found` result. `queued` rows are not charged here — the eventual enrichment is billed by the async pipeline. # Bulk reverse email lookup Source: https://api.tryspecter.com/api-reference/enrichment/bulk-reverse-email-lookup /api-ref/bundle_api.yaml post /people/by-email/bulk Resolve up to 50 email addresses to people in a single request. This is the bulk counterpart to `POST /people/by-email` — pass a JSON array of email addresses (1–50). Each match echoes the `email` it resolved so you can map results back to inputs. Emails that don't match a person are silently omitted; the response order is not guaranteed. This endpoint uses 1 credit per matched person. Unmatched emails are not charged. # Enrich companies Source: https://api.tryspecter.com/api-reference/enrichment/enrich-companies /api-ref/bundle_api.yaml post /companies **What it does** Searches the internal companies dataset and returns the most current information for any companies matching the identifier provided in the request body. When using the domain identifier, the search includes both the company’s primary domain and any associated domain aliases, which means the endpoint may return multiple results. **Why you'd use it** Retrieve or enrich company profiles by a known identifier. **Key behaviors** - Using the domain identifier matches both the company’s primary domain and any domain aliases, so the response can include multiple companies. - If no matches are found, the response will be an empty list, and our team will be notified internally to begin gathering and enriching data for that company. - The last_updated field indicates the most recent date and time the company’s data was refreshed and will update whenever new information becomes available. This endpoint uses 1 credit per company returned. If the endpoint returns 10 companies then 10 credits are consumed. # Enrich people Source: https://api.tryspecter.com/api-reference/enrichment/enrich-people /api-ref/bundle_api.yaml post /people **What it does** Searches our people dataset and returns the most current professional profile for an individual matching the identifier(s) in your request—including career history, skills, and social presence. **Why you’d use it** Enrich people records from a known identifier for diligence, outreach, or CRM/warehouse syncs. **Key behaviors** - Response: Returns a single person object when a match is found. Currently queries for `linkedin_num_id` and `linkedin_urn` will not be enriched if they do not exist. This feature will be released at a future date. This endpoint uses 1 credit per person returned. If the endpoint returns 10 people then 10 credits are consumed. # Reverse email lookup Source: https://api.tryspecter.com/api-reference/enrichment/reverse-email-lookup /api-ref/bundle_api.yaml post /people/by-email **What it does** Takes an email address, searches Specter’s People Database and returns the most probable person along with their Specter person ID and core profile fields. **Why you’d use it** When you have an email address and need to resolve it to a Specter person record so you can standardize contacts, enrich them, or link inbound emails to the correct individual in our database. **Key behaviors** - Score: The score ranges from 1 to 10, indicating the confidence of the match. A score of 7 or higher generally reflects a reliable match. Scores below 7 should be treated with increasing caution. This endpoint uses 1 credit per request. # Text search Source: https://api.tryspecter.com/api-reference/enrichment/text-search /api-ref/bundle_api.yaml post /entities/text-search **What it does** Creates a set of resolved entity matches (companies or investors) found in a short text passage and returns each matched entity’s id. **Why you’d use it** Turn unstructured text—press releases, bios, notes—into structured entity references you can track, enrich, and join to your downstream systems. **Key behaviors** - Max 1000 characters. - People are currently not supported. This may be added in future. - Returns an empty list if there are no matches. This endpoint uses 1 credit per request. # Get Investor Interest Signals saved search details Source: https://api.tryspecter.com/api-reference/investor-interest-saved-searches/get-investor-interest-signals-saved-search-details /api-ref/bundle_api.yaml get /searches/investor-interest/{searchId} Retrieve details about a saved interest search. This endpoint provides access to the name, query_id and number of interest signals in the search. The saved search must be shared with the API, or shared globally by Specter to be queried. # Get Investor Interest Signals saved search results Source: https://api.tryspecter.com/api-reference/investor-interest-saved-searches/get-investor-interest-signals-saved-search-results /api-ref/bundle_api.yaml get /searches/investor-interest/{searchId}/results Retrieve the results of an interest search operation. This endpoint provides paginated access to matching investor interest signals with core company or talent data based on your search criteria. The saved search must be shared with the API, or shared globally by Specter to be queried. This endpoint uses 1 credit per interest signal returned. If the endpoint returns 10 interest signals then 10 credits are consumed. # Create a new investor list Source: https://api.tryspecter.com/api-reference/investor-lists/create-a-new-investor-list /api-ref/bundle_api.yaml post /lists/investors **What it does** Creates a new list of investors that is shared with the API and returns the new list's id. **Why you'd use it** Programmatically build and maintain sourcing/diligence shortlists of investors (e.g.,thesis or region based cohorts such as “Investors focus in B2B Deeptech”). **Key behaviors** - Add investors at creation by passing their Specter investor IDs; duplicates are deduplicated server-side. - The list owner will be the first team admin added to the account. - List names must be unique per organization; if a name already exists, rename the existing list or choose a new name. # Delete an investor list Source: https://api.tryspecter.com/api-reference/investor-lists/delete-an-investor-list /api-ref/bundle_api.yaml delete /lists/investors/{listId} Permanently delete an investor list and all its associated data. This action cannot be undone. The list must be shared with the API, and when deleted will be removed from the user's lists. # Get all investor lists Source: https://api.tryspecter.com/api-reference/investor-lists/get-all-investor-lists /api-ref/bundle_api.yaml get /lists/investors **What it does** Returns all the investor lists created with the API, shared with the API or shared globally **Why you'd use it** Discover which investor cohorts you can work with and see their sizes before fetching individual records. **Key behaviors** - Each list object includes the number of investors in the list. - To retrieve the investor IDs in a list, call the corresponding GET endpoint with that list’s ID. # Get investor list results Source: https://api.tryspecter.com/api-reference/investor-lists/get-investor-list-results /api-ref/bundle_api.yaml get /lists/investors/{listId}/results **What it does** Returns the investors in a specific list along with their current profile, activity, and targeting data. **Why you'd use it** Run scheduled analyses on a curated investor cohort — e.g. refresh ranks, surface new co-investors, or trigger alerts for targets in your list. **Key behaviors** - Path param: `list_id` must be a UUID; otherwise the API returns 400 Bad Request. - The list must be of product type `investors`; other product types return 400. The list must be shared with the API or created by the API. This endpoint uses 1 credit per investor returned. If the endpoint returns 10 investors then 10 credits are consumed. # Get specific investor list info Source: https://api.tryspecter.com/api-reference/investor-lists/get-specific-investor-list-info /api-ref/bundle_api.yaml get /lists/investors/{listId} Retrieve detailed information about a specific investor list which is created or shared with the API, including the ids of the investors it contains. # Modify an investor list Source: https://api.tryspecter.com/api-reference/investor-lists/modify-an-investor-list /api-ref/bundle_api.yaml patch /lists/investors/{listId} **What it does** Adds and/or removes investor IDs from an existing investor list in a single request. **Why you'd use it** Keep a curated investor cohort current as your dealflow pipeline evolves. **Key behaviors** - Supports adding and removing investors in a single request (per the request schema on this page). - To create a new list and add investors in one step, use `POST /lists/investors`. The list must be shared with the API to be modifiable. # Get investor saved search details Source: https://api.tryspecter.com/api-reference/investor-saved-searches/get-investor-saved-search-details /api-ref/bundle_api.yaml get /searches/investors/{searchId} **What it does** Returns the results of a single saved investor search — name, query ID, and the total number of investors the search currently matches. **Why you'd use it** - Confirm a saved search exists and is bound to the expected query before paginating its results via `/searches/investors/{search_id}/results`. - Show the matched-investor count in a UI or report without fetching the full result set. **Key behaviors** - Path param: `searchId` is required and must be numeric. Non-numeric values return `404 Not Found`. - The saved search must be an **investor** search. If the search exists but its `product_type` is not `investors`, the endpoint returns `400 NOT_SUPPORTED_PRODUCT`. - `full_count` may be `null` while the search's total count is still being computed. The saved search must be shared with the API, or shared globally by Specter, to be queried. # Get investor saved search results Source: https://api.tryspecter.com/api-reference/investor-saved-searches/get-investor-saved-search-results /api-ref/bundle_api.yaml get /searches/investors/{searchId}/results **What it does** Returns the investors that match a saved investor search, with full investor detail (profile, activity, targeting, funds, portfolio companies). **Why you'd use it** - Pull the current matches of a saved thesis so you can score, enrich, and route them downstream. - Schedule a recurring fetch to keep CRM/warehouse data in sync with the latest matches. **Key behaviors** - Path param: `searchId` is required and must be numeric. - Query params: `limit` (default 50, max **5000**) and `page` (0-indexed, default 0). - The saved search must be an **investor** search. If it exists but its `product_type` is not `investors`, the endpoint returns `400 NOT_SUPPORTED_PRODUCT`. - Returns `404 Not Found` when the search ID does not exist or is not accessible to your organization. To use a saved search it must be shared with the API, created by the API, or shared globally by Specter. This endpoint uses 1 credit per investor returned. If the endpoint returns 50 investors then 50 credits are consumed. # Bulk get investors by ID Source: https://api.tryspecter.com/api-reference/investors/bulk-get-investors-by-id /api-ref/bundle_api.yaml post /investors/by-id/bulk Resolve up to 50 investors in a single request. This is the bulk counterpart to the investor lookup (`GET /investors`) — pass a JSON array of lookup objects (1–50), each identifying one investor by website or name. Provide at least one of `website` or `name` per lookup object. Lookups that don't resolve are silently omitted; the response order is not guaranteed. This endpoint uses 1 credit per investor returned. Unresolved lookups are not charged. # Get investor by ID Source: https://api.tryspecter.com/api-reference/investors/get-investor-by-id /api-ref/bundle_api.yaml get /investors/{investorId} **What it does** Returns the full Specter investor record for a single Specter investor ID, including (profile, activity, targeting, funds, portfolio companies). **Why you'd use it** - Enrich or refresh a known investor in your system (for scoring, diligence, or CRM/warehouse sync) by referencing its ID. - Pull the list of portfolio company IDs to drive a downstream call to `/companies/{companyId}`. - Inspect targeting (industries, verticals, stages) when prioritising outreach. **Key behaviors** - Path param: `investorId` (Specter investor ID, `inv_...`) is required. - Response: a single investor object with the latest data available. - `person_id` is populated when the investor is an individual (e.g. an angel); `company_id` is populated when the investor has an associated company in Specter (e.g. the firm behind a fund). Either, both, or neither may be `null`. - Returns `404 Not Found` if the investor does not exist. This endpoint uses 1 credit per request. # Get investor funding rounds Source: https://api.tryspecter.com/api-reference/investors/get-investor-funding-rounds /api-ref/bundle_api.yaml get /investors/{investorId}/funding-rounds **What it does** Returns a paginated list of the funding rounds an investor has participated in. Each item includes the round detail, the company that raised, and the *full* set of investors on that round (with a lead flag). **Why you'd use it** - Build the activity history of an investor across companies. - Spot co-investor relationships by inspecting the per-round investor list. - Sync round-level data into your CRM or warehouse for portfolio tracking. **Key behaviors** - Path param: `investorId` (Specter investor ID) is required. - Ordered by `announced_on` descending (most recent first); rounds with no announced date are returned last. - Pagination: `limit` defaults to 50 and is capped at 1000. - Returns `404 Not Found` if the investor does not exist. # Look up investors Source: https://api.tryspecter.com/api-reference/investors/look-up-investors /api-ref/bundle_api.yaml get /investors **What it does** Searches the Specter investors dataset and returns the investor records matching the identifier(s) provided as query parameters. You can look an investor up by `website` (domain), by `name`, or by both. **Why you'd use it** - Resolve an inbound mention of an investor — a domain on a deck, a firm name in a press release — to the canonical Specter investor record so you can sync it to CRM or chain into related calls. - Pull the Specter investor ID for downstream calls to `/investors/{investorId}`, `/searches/investors`, or list management. **Key behaviors** - At least one of `website` or `name` is required. Supplying both narrows the match — an investor must match every field provided. - Lookups are case-insensitive. The `website` parameter accepts URLs with or without scheme/`www.`; the host is normalised before matching. - Response: an array of investors. The endpoint is a *lookup*, not a single-result fetch — an ambiguous query (e.g. a shared domain) can legitimately return multiple candidates. - Returns `404 Not Found` if no investor matches the provided identifiers. This endpoint uses 1 credit per investor returned. If the endpoint returns 3 investors then 3 credits are consumed. # Search investor name Source: https://api.tryspecter.com/api-reference/investors/search-investor-name /api-ref/bundle_api.yaml get /investors/search **What it does** Returns any investors whose name fuzzily matches the given `query` term. **Why you'd use it** To look up the Specter ID for an investor from their name before chaining the Investors API for the full profile. **Key behaviors** - Query: required URL parameter (minimum 3 characters) with the name to search for. - Response: array of basic Specter investor information, each with a `match_confidence` from 0 to 1, sorted by descending confidence. Use the Investors API to fetch full details. - No matches: returns an empty list when no investor clears a `match_confidence` of 0.5. `match_confidence` is derived from trigram similarity and is **absolute** — comparable across separate calls, unlike the company and people search scores which are relative to a single response. The limit for this endpoint is 10. This endpoint uses 1 credit per request, regardless of how many matches are returned. # Get companies in your team's network Source: https://api.tryspecter.com/api-reference/network/get-companies-in-your-teams-network /api-ref/bundle_api.yaml get /network/companies Returns all companies where someone in your team's network currently works ordered by number of connections at each company. Each result includes the person IDs of your contacts there. This endpoint uses 1 credit per request. # Get people in your team's network Source: https://api.tryspecter.com/api-reference/network/get-people-in-your-teams-network /api-ref/bundle_api.yaml get /network/people Returns all people your team is connected to on LinkedIn, deduped across your teammates. Each result includes which teammates hold the connection. This endpoint uses 1 credit per request. # Get your team's network at a company Source: https://api.tryspecter.com/api-reference/network/get-your-teams-network-at-a-company /api-ref/bundle_api.yaml get /network/connection/{companyId} Returns your team's connections at a specific company, who you know there, what roles they hold and which teammates are linked to them. Returns `404` when the org has no resolvable contacts at the requested company. This endpoint uses 1 credit per request. # Get News Signal by ID Source: https://api.tryspecter.com/api-reference/news-signals/get-news-signal-by-id /api-ref/bundle_api.yaml get /news-signals/{signalId} Retrieve a single news signal by its integer Specter signal id. A "news signal" represents one classified company mention within a single article — when an article mentions multiple companies, each company yields its own signal. Use this endpoint to fetch detailed information for a specific signal referenced in another response (such as a company's news feed or a saved search result). This endpoint uses 1 credit per request. # Get News Signals for a company Source: https://api.tryspecter.com/api-reference/news-signals/get-news-signals-for-a-company /api-ref/bundle_api.yaml get /companies/{companyId}/news-signals News signals associated with a specific company, providing its complete history of signals sorted in reverse chronological order (most recent first). Returns `404` when the company is unknown to Specter, and a 200 with an empty array when the company is known but has no signals. This endpoint uses 1 credit per request. # Get News Signals for a company list Source: https://api.tryspecter.com/api-reference/news-signals/get-news-signals-for-a-company-list /api-ref/bundle_api.yaml get /lists/companies/{listId}/news-signals News signals attributed to the companies in a given list. Companies outside the list are excluded. Returns `404` when the list does not exist or is not visible to the caller (including lists for non-company products). Lists with more than 5,000 member companies are silently capped at that limit to keep the news-signal join tractable. This endpoint uses 1 credit per request. # Get News Signals for a saved company search Source: https://api.tryspecter.com/api-reference/news-signals/get-news-signals-for-a-saved-company-search /api-ref/bundle_api.yaml get /searches/companies/{searchId}/news-signals News signals attributed to the companies returned by a saved company search. Date-range queries live inside the saved search itself; this endpoint accepts no top-level date parameter. Returns `404` when the search does not exist or is not visible to the caller (including searches for non-company products). Returns `500` with `Misformatted query` when the stored search payload fails to parse as a company filter. Saved searches that match more than 5,000 companies are silently capped at that limit to keep the news-signal join tractable. This endpoint uses 1 credit per request. # List your team's members Source: https://api.tryspecter.com/api-reference/organization/list-your-teams-members /api-ref/bundle_api.yaml get /organization/members Returns all active members of your team - their user ID, role, name, and email. The `user_id` field matches teammate IDs returned by Network endpoints. Suspended users are excluded. This endpoint uses 1 credit per request. # Create a new people list Source: https://api.tryspecter.com/api-reference/people-lists/create-a-new-people-list /api-ref/bundle_api.yaml post /lists/people **What it does** Creates a list of people that is shared with the API and returns the new list’s id. **Why you'd use it** Programmatically maintain outreach/diligence cohorts (e.g., founders, execs, domain experts) you’ll enrich, score, and sync to internal tools. **Key behaviors** - Add people at creation by passing their person IDs, or add them later via the PUT endpoint for that list id. - The list owner will be the first team admin on your account. - List names must be unique; if a name already exists, rename the existing list or choose a new name. # Delete a people list Source: https://api.tryspecter.com/api-reference/people-lists/delete-a-people-list /api-ref/bundle_api.yaml delete /lists/people/{listId} Permanently delete a people list and all its associated data. This action cannot be undone. The list must be shared with the API, and when deleted will be removed from the users lists. # Get all people lists Source: https://api.tryspecter.com/api-reference/people-lists/get-all-people-lists /api-ref/bundle_api.yaml get /lists/people **What it does** Returns all people lists available to your API key—lists created via the API, shared with the API in the UI, or shared globally. **Why you’d use it** Discover which people cohorts you can work with and see their sizes before fetching individual records. **Key behaviors** - Each list object includes the number of people in the list. - To retrieve the people IDs in a list, call the corresponding GET endpoint with that list’s ID. - Only lists that meet the availability criteria above are returned. # Get people list results Source: https://api.tryspecter.com/api-reference/people-lists/get-people-list-results /api-ref/bundle_api.yaml get /lists/people/{listId}/results **What it does** Returns all people currently in a specific list, with detailed profile information for each person. **Why you’d use it** Analyze a curated cohort, drive outreach, or sync people records into your internal tools. **Key behaviors** - Response includes per-person details (not just IDs). The list must be shared with the API to be queried. This endpoint uses 1 credit per person returned. If the endpoint returns 10 people then 10 credits are consumed. # Get specific people list info Source: https://api.tryspecter.com/api-reference/people-lists/get-specific-people-list-info /api-ref/bundle_api.yaml get /lists/people/{listId} Retrieve detailed information about a specific people list which is created or shared with the API, including the ids of the people it contains. # Modify a people list Source: https://api.tryspecter.com/api-reference/people-lists/modify-a-people-list /api-ref/bundle_api.yaml patch /lists/people/{listId} **What it does** Adds or removes people in an existing people list. **Why you’d use it** Keep a curated contact cohort current as your pipeline changes. **Key behaviors** - Supports adding and removing people in a single request (per the request schema on this page). - To create a new list and add people in one step, use POST Create a new people list. The list must be shared with the API to be modifiable. # Get people saved search details Source: https://api.tryspecter.com/api-reference/people-saved-searches/get-people-saved-search-details /api-ref/bundle_api.yaml get /searches/people/{searchId} **What it does** Returns summary details for a saved people search—including its name, query_id, and the number of people matched. **Why you’d use it** Quickly gauge the size and relevance of a saved people search before deciding to fetch full results. **Key behaviors** - Provides metadata only (no per-person records). Use the GET saved people search results endpoint to retrieve individuals. The saved search must be shared with the API, or shared globally by Specter to be queried. # Get people saved search results Source: https://api.tryspecter.com/api-reference/people-saved-searches/get-people-saved-search-results /api-ref/bundle_api.yaml get /searches/people/{searchId}/results **What it does** Returns the people matching a saved people search, so you can analyze and work with the results programmatically. **Why you’d use it** Pull a targeted set of contacts for outreach, enrichment, scoring, or syncs to internal tools. **Key behaviors** - Response: an array of people records. To use a saved search it must be shared with the API, created by the API, or shared globally by Specter. This endpoint uses 1 credit per person returned. If the endpoint returns 10 people then 10 credits are consumed. # Get person info by ID Source: https://api.tryspecter.com/api-reference/people/get-person-info-by-id /api-ref/bundle_api.yaml get /people/{personId} **What it does** Returns the up-to-date professional profile for a single person identified by their Person ID, including career history, skills, and education. **Why you’d use it** Enrich and maintain contact/founder records for diligence, outreach, or syncing to your CRM/warehouse. **Key behaviors** - Input: requires a person ID. - Response: one person profile object with the most current data available. This endpoint uses 1 credit per request. # Get person's email Source: https://api.tryspecter.com/api-reference/people/get-persons-email /api-ref/bundle_api.yaml get /people/{personId}/email **What it does** Retrieves a professional or personal email address for a person. Uses a waterfall across multiple data providers to return the strongest available match. **Why you’d use it** Obtain a contactable email for outreach or diligence once you’ve identified a specific person. **Key behaviors** - Query param: type can be professional or personal. - If not provided, the endpoint tries professional first, then falls back to personal. - Response: includes which email type was returned. This endpoint uses 1 credit per email returned. If the endpoint returns 10 emails then 10 credits are consumed. # Search person name Source: https://api.tryspecter.com/api-reference/people/search-person-name /api-ref/bundle_api.yaml get /people/search **What it does** Returns any people whose name matches the given `query` term. **Why you'd use it** To look up the Specter ID for a person from their name before chaining the People API for the full profile. **Key behaviors** - Query: required URL parameter (minimum 3 characters) with the name to search for. - Response: array of basic Specter people information, each with a `match_confidence` from 0 to 1, sorted by descending confidence. Use the People API to fetch full details. - No matches: returns an empty list when no person clears a `match_confidence` of 0.5. The limit for this endpoint is 10. This endpoint uses 1 credit per request, regardless of how many matches are returned. # Get Revenue Signal by ID Source: https://api.tryspecter.com/api-reference/revenue-signals/get-revenue-signal-by-id /api-ref/bundle_api.yaml get /revenue-signals/{signalId} Retrieve a single revenue (or profitability) signal by its Specter signal id (`rev_...`). Each signal corresponds to one observation derived from news coverage or a public filing — the revenue (or profitability) figures, the year they refer to, the source url, and the company they are attributed to. Use this endpoint to look up the details of a signal referenced from another response (e.g. a list of recent revenue signals on a company). This endpoint uses 10 credits per request. # Get Revenue Signals for a company list Source: https://api.tryspecter.com/api-reference/revenue-signals/get-revenue-signals-for-a-company-list /api-ref/bundle_api.yaml get /lists/companies/{listId}/revenue-signals Revenue signals attributed to the companies in a given list. Companies outside the list are excluded. Not to be confused with `GET /revenue-signals`, which lists every revenue signal across all companies — this endpoint returns only the revenue signals for this list's member companies. Returns `404` when the list does not exist or is not visible to the caller (including lists for non-company products). Lists with more than 5,000 member companies are silently capped at that limit to keep the revenue-signal join tractable. This endpoint uses 10 credits per signal returned. # Get Revenue Signals for a saved company search Source: https://api.tryspecter.com/api-reference/revenue-signals/get-revenue-signals-for-a-saved-company-search /api-ref/bundle_api.yaml get /searches/companies/{searchId}/revenue-signals Revenue signals attributed to the companies returned by a saved company search. Date-range queries live inside the saved search itself; this endpoint accepts no top-level date parameter beyond `new`. Returns `404` when the search does not exist or is not visible to the caller (including searches for non-company products). Returns `500` with `Malformed filter` when the stored search payload fails to parse as a company filter. Saved searches that match more than 5,000 companies are silently capped at that limit to keep the revenue-signal join tractable. This endpoint uses 10 credits per signal returned. # List Revenue Signals Source: https://api.tryspecter.com/api-reference/revenue-signals/list-revenue-signals /api-ref/bundle_api.yaml get /revenue-signals Retrieve revenue (and profitability) signals, newest first. Each item is the same signal object returned by `GET /revenue-signals/{signalId}` — the revenue or profitability figure, the year it refers to, the source url, and the company it is attributed to. Set `new=true` to narrow the results to signals published in the current week. This endpoint uses 10 credits per signal returned. # Delete a search Source: https://api.tryspecter.com/api-reference/saved-searches/delete-a-search /api-ref/bundle_api.yaml delete /searches/{searchId} Permanently delete the saved search and all its associated data. This action cannot be undone. The saved search must be shared with the API, and when deleted will be removed from the users saved searches. # Get all saved searches Source: https://api.tryspecter.com/api-reference/saved-searches/get-all-saved-searches /api-ref/bundle_api.yaml get /searches Returns all the saved searched, across all product types, that are shared with the API, this includes saved searches that may be shared globally. The results of a search can be queried for by doing a GET using the searchId. The saved searches can relate to any one of the products, company, investors, etc. # Bulk get Investor Interest Signals by ID Source: https://api.tryspecter.com/api-reference/talent-and-interest-signals/bulk-get-investor-interest-signals-by-id /api-ref/bundle_api.yaml post /investor-interest/by-id/bulk Retrieve up to 50 investor-interest signals in a single request by supplying a list of signal IDs. This is the bulk counterpart to `GET /investor-interest/{signalId}`. The request body is a JSON array of signal IDs (1–50). Unknown IDs are silently omitted from the response, and duplicate IDs are honored. The response order is not guaranteed. This endpoint uses 1 credit per signal returned. Unknown IDs are not charged. # Bulk get Talent Signals by ID Source: https://api.tryspecter.com/api-reference/talent-and-interest-signals/bulk-get-talent-signals-by-id /api-ref/bundle_api.yaml post /talent/by-id/bulk Retrieve up to 50 talent signals in a single request by supplying a list of talent signal IDs. This is the bulk counterpart to `GET /talent/{talentSignalId}` — use it to pull many specific signals in one call instead of issuing them one at a time. The request body is a JSON array of talent signal IDs (1–50). Unknown IDs are silently omitted from the response, and duplicate IDs are honored (a repeated ID yields a repeated result). The response order is not guaranteed. This endpoint uses 1 credit per talent signal returned. Unknown IDs are not charged. # Get Investor Interest Signal by ID Source: https://api.tryspecter.com/api-reference/talent-and-interest-signals/get-investor-interest-signal-by-id /api-ref/bundle_api.yaml get /investor-interest/{signalId} Retrieve interest that investors have in either Talent or Companies. The response includes the most up-to-date information available in our database. This endpoint uses 1 credit per request. # Get Talent Signal by ID Source: https://api.tryspecter.com/api-reference/talent-and-interest-signals/get-talent-signal-by-id /api-ref/bundle_api.yaml get /talent/{talentSignalId} Retrieve detailed professional information for a specific talent using their ID. This endpoint provides comprehensive profile data, including career history, skills, education, and unique talent signals. The response includes the most up-to-date information available in our database, including signal scores, stealth advantages, and position changes. This endpoint uses 1 credit per request. # Get Talent Signals saved search details Source: https://api.tryspecter.com/api-reference/talent-signals-saved-searches/get-talent-signals-saved-search-details /api-ref/bundle_api.yaml get /searches/talent/{searchId} Retrieve details about a saved talent search. This endpoint provides access to the name, query_id and number of talent signals in the search. The saved search must be shared with the API, or shared globally by Specter to be queried. # Get Talent Signals saved search results Source: https://api.tryspecter.com/api-reference/talent-signals-saved-searches/get-talent-signals-saved-search-results /api-ref/bundle_api.yaml get /searches/talent/{searchId}/results Retrieve the results of a talent search operation. This endpoint provides paginated access to matching talent profiles based on your search criteria, including their signal scores and position changes. To use a saved search it must be shared with the API, created by the API, or shared globally by Specter. This endpoint uses 1 credit per talent signal returned. If the endpoint returns 10 talent signals then 10 credits are consumed. # Get acquisition by ID Source: https://api.tryspecter.com/api-reference/transactions/get-acquisition-by-id /api-ref/bundle_api.yaml get /acquisitions/{acquisitionId} **What it does** Returns a single acquisition record by its Specter acquisition ID. The response includes both sides of the deal: the acquirer and the acquiree, each with their Specter company ID and primary domain so you can chain to `GET /companies/{companyId}` for either party. **Why you'd use it** Enrich a known deal in your CRM or data warehouse, or follow up on a reference returned by `GET /companies/{companyId}/acquisitions`. **Key behaviors** - Path param: `acquisitionId` (Specter acquisition ID, prefix `acq_`) is required. - Response: a single `PublicAcquisition` object. - Not found: returns 404 Not Found if no acquisition with that ID exists. This endpoint uses 1 credit per request. # Get funding round by ID Source: https://api.tryspecter.com/api-reference/transactions/get-funding-round-by-id /api-ref/bundle_api.yaml get /funding-rounds/{fundingRoundId} **What it does** Returns a single funding round by its Specter funding round ID, including the company that raised the round and the full list of participating investors (with a lead flag). **Why you'd use it** - Look up the details of a specific round referenced from another API response (e.g. a company's funding history). - Identify the lead investor and co-investors on each round **Key behaviors** - Path param: `fundingRoundId` (Specter funding round ID, `fnr_...`) is required. - Returns `404 Not Found` if the round does not exist. # Get IPO by ID Source: https://api.tryspecter.com/api-reference/transactions/get-ipo-by-id /api-ref/bundle_api.yaml get /ipos/{ipoId} **What it does** Returns a single IPO record by its Specter IPO ID, including the issuing company's Specter company ID and primary domain so you can chain to `GET /companies/{companyId}` for the full company record. **Why you'd use it** Enrich a known listing in your CRM or data warehouse, or follow up on a reference returned by `GET /companies/{companyId}/ipos`. **Key behaviors** - Path param: `ipoId` (Specter IPO ID, prefix `ipo_`) is required. - Response: a single `PublicIpo` object. - Many IPO fields are nullable when the underlying disclosure was not available (e.g. private listings without published share price). - Not found: returns 404 Not Found if no IPO with that ID exists. This endpoint uses 1 credit per request.