Tool ID:
bloomberry_get_tech_stack_changesRun this action
Use the TypeScript SDK for one call. Usectx.tools.execute(...) inside a Play for durable calls, scheduled calls, or CSV processing.
import { Deepline } from 'deepline';
const deepline = await Deepline.connect();
const result = await deepline.tools.execute(
'bloomberry_get_tech_stack_changes',
{
"next_token": "example",
"limit": 20,
"begin_date": "2026-01-15"
},
);
console.log(result.toolResponse.raw);
CLI
deepline run bloomberry_get_tech_stack_changes --input '{
"next_token": "example",
"limit": 20,
"begin_date": "2026-01-15"
}'
Example response
The SDK returns this shape atresult.toolResponse.raw. The example values illustrate the response.
{
"data": {
"signals": [
{
"id": "id_123",
"change_date": "2026-01-15T12:00:00Z",
"change_type": "subscribed",
"change_description": "example",
"domain": "example.com",
"company_name": "Example Corp",
"industry": "example",
"company_size_range": "example",
"country": "US",
"vendor_category": "example",
"vendor_market": "SMB",
"vendor_market_leader": true,
"vendor_source": "dns record"
}
],
"pagination": {
"page": 123,
"per_page": 123,
"total_pages": 123,
"total_items": 123
}
}
}
deepline describe bloomberry_get_tech_stack_changes --json for the latest machine-readable contract.
Input reference
Returns companies that added or removed a specific tech vendor or ANY tech vendor within a specific category, sorted by most recent first Need an API key? Get a free API key here| Name | Type | Required | Default | Details |
|---|---|---|---|---|
payload.next_token | string | No | — | Pagination token from previous response (located in “pagination” > “next_token”) to fetch the next page. Leave blank for the first page |
payload.limit | integer | No | 20 | Signals per page Minimum: 1. Maximum: 20. |
payload.begin_date | string | No | — | Start date. Defaults to the first date in our dataset. Format: date. |
payload.end_date | string | No | — | End date. Defaults to end of today. Format: date. |
payload.category | string | No | — | The product category to get tech stack changes for. All possible product categories are available at https://api.revealera.com/categories.txt. Pass “all” to get changes for all categories. Note: ONLY 1 of category OR vendor_name MUST be specified, but no more than 1. |
payload.vendor_name | string | No | — | The vendor_name to get tech stack changes for. For example, ‘Google Workspace’ to get tech stack changes for Google Workspace. Note: ONLY 1 of category OR vendor_name MUST be specified, but no more than 1. All possible vendor names can be found here: https://api.revealera.com/vendors.txt |
payload.churn_only | string | No | false | true if you want to see churn changes only. false if you want to see all changes, including churn |
payload.new_only | string | No | false | true if you want to see new installs or new usage changes only. false otherwise |
payload.company_employee_size_range | string | No | — | Only show tech stack changes from companies with number of employees that match the specified size ranges. Possible ranges are 1 employee, 2-10, 11-50, 51-200, 201-500, 501-1,000, 1,001-5,000, 5,001-10,000, 10,001+. Separate multiple values with semicolon. |
payload.company_industry | string | No | — | Only show tech stack changes from companies in the specified industries. We look at the LinkedIn company page to determine industries. All possible industries are available at https://api.revealera.com/linkedin_industries.txt . Separate multiple values with semicolon. |
payload.company_country | string | No | — | Only show tech stack changes from companies headquartered in the specified countries. Country codes must be in ISO 3166-1 alpha-2 format. Separate multiple values with semicolon. Pattern: ^[A-Z]{2}(;[A-Z]{2})*$. |
payload.omit_linkedin_data | string | No | false | true if you to omit linkedin-related fields from the response (ie for compliance reasons) |
Output reference
Standard tool result payload.| Name | Type | Required | Default | Details |
|---|---|---|---|---|
result.data | object | Yes | — | Provider response payload. |
result.data.signals | array | Yes | — | — |
result.data.signals[].id | string | Yes | — | Signal ID |
result.data.signals[].change_date | string | Yes | — | Date when the tech change occurred (ISO 8601 format with timezone) Format: date-time. |
result.data.signals[].change_type | "subscribed" | "unsubscribed" | "usage" | "stop_usage" | "upgrade" | "downgrade" | Yes | — | Type of change Allowed: subscribed, unsubscribed, usage, stop_usage, upgrade, downgrade. |
result.data.signals[].change_description | string | Yes | — | A description of the tech change |
result.data.signals[].linkedin_username | string | null | No | — | LinkedIn username of the company |
result.data.signals[].linkedin_company_id | string | null | No | — | LinkedIn company id of the company |
result.data.signals[].domain | string | Yes | — | Company domain/website of the company |
result.data.signals[].company_name | string | Yes | — | Name of the company |
result.data.signals[].company_logo | string | No | — | URL to company logo Format: uri. |
result.data.signals[].company_address | string | null | No | — | Company address, if found |
result.data.signals[].industry | string | Yes | — | Company industry of the company |
result.data.signals[].company_size_range | string | Yes | — | Company size range |
result.data.signals[].company_size_range_estimated | boolean | No | — | true if the company_size_range was estimated by us, or false if it was taken directly from their Linkedin company profile |
result.data.signals[].company_description | string | No | — | Company description |
result.data.signals[].country | string | Yes | — | Company HQ country |
result.data.signals[].region | string | No | — | Company HQ region |
result.data.signals[].vendor_name | string | null | No | — | Name of the technology vendor |
result.data.signals[].vendor_category | string | Yes | — | Category of the vendor/technology |
result.data.signals[].vendor_market | "SMB" | "Shopify" | "Mid-Market" | "Enterprise" | Yes | — | Market segment of the vendor Allowed: SMB, Shopify, Mid-Market, Enterprise. |
result.data.signals[].vendor_notes | string | No | — | Additional notes about the vendor such as its unique features/topics |
result.data.signals[].vendor_market_leader | boolean | Yes | — | Whether vendor is a market leader |
result.data.signals[].vendor_url | string | null | No | — | URL to vendor website Format: uri. |
result.data.signals[].vendor_source | "dns record" | "website javsacript" | "link found" | "internal subdomain" | Yes | — | Source where we found the signal Allowed: dns record, website javsacript, link found, internal subdomain. |
result.data.signals[].plan_name | string | null | No | — | the name of the product plan this customer changed to (most of the time it is null, but if we know it, it is indicated here) |
result.data.pagination | object | Yes | — | — |
result.data.pagination.page | integer | Yes | — | Current page number |
result.data.pagination.per_page | integer | Yes | — | Number of items per page |
result.data.pagination.total_pages | integer | Yes | — | Total number of pages |
result.data.pagination.total_items | integer | Yes | — | Total number of items |
result.meta | object | No | — | Additional response metadata (status, paging). |
Deepline cost
- Pricing model:
per_result(per result). - Estimated Deepline credits:
4.21per pricing unit.