Skip to main content
Keep track of the evolution of the Pubrio Data Layer.

2026 Releases

v2.4.7 - News Search: Company Names, Roles and Reading Language (Oct 2026)

  • API: News Search takes company_names, such as ["Volvo Cars", "Renault"], as an alternative to domains. Each name is matched to the company website its news is filed under.
  • API: company_roles: ["primary"] returns only articles about the company; ["mentioned"] only those that name it in passing. Left out, both come back as before.
  • API: language sets the language titles, summaries and category names come back in (en, zh-CN, zh-HK, ja, ko, hi, es, pt-BR) without filtering articles. Each row also carries title_original and summary_original.
  • API: news_languages keeps articles originally written in a language and now matches a base code to its regional variants (zh matches zh-CN and zh-HK). news_search_term_languages chooses which translations a keyword is matched against.
  • API: A plain-English query, such as “Volvo Cars news about electric vehicles in the last 6 months”, is turned into filters, which are returned in metadata.filters.
  • Fixed: language on any search endpoint now sets the language results come back in; before, the workspace language was always used.
  • Fixed: People Search departments and department_functions with a value the catalog does not hold return no people, as management_levels already did. Before, the filter was dropped and people of every department came back as a normal 200.
  • API: Department, function and management level values match in any case, spacing or punctuation on People Search and Job Search: information_technology is read as master_information_technology. A value that names none whole is read as the one that holds all its words: engineering is read as master_engineering_technical.
  • API: People Search accepts person_locations as another name for people_locations; metadata.renamed_fields reports the rename.
  • API: Contact Lookup and Contact Lookup - Bulk search by first_name + last_name + domain or company whenever a row has no email or phone. is_enable_similarity_search is no longer needed for these rows; it now only decides whether a row whose email or phone finds nobody is also searched by name.
  • API: domain can be a website, such as https://www.stripe.com/; it is read as stripe.com.
  • Fixed: A bulk lookup of name + domain rows sent without is_enable_similarity_search answered with an empty peoples list, as if nobody matched. A bulk request where no entry has an email, phone, or name + domain/company is now refused with 400, like the single lookup.
  • Fixed: The same name + company sent twice in one bulk request is marked is_duplicate_input and charged once, as an email or phone already was.
  • API: Each match carries match.input_index, the position of the entry it answers in peoples, so matches can be paired with their rows when some rows find nobody.
  • Fixed: A lookup by name searches every company record with that domain, so people linked to a second record of the same company are found, and it answers about twice as fast.
  • API: Search Similar People returns a similarity_score between 0 and 1 on each person, and per_page sets the page size.
  • Fixed: The reference person or title only sets what similar means. Every other filter, such as people_locations or domains, narrows the results; before, the reference itself came back and the other filters were ignored.
  • Fixed: Expansion Overview answers 408 when it cannot finish in time, instead of an empty countries list.
  • Fixed: Job Search functions and Advertisement Search reach_tiers answer at once with no rows for a value that does not exist; before, the request ran until it timed out.
  • API: A Company Search query now also reads industries to leave out, social profiles, city, advertising (platform, format, target country) and cloud hosting (provider, server countries), besides industry, technology, location, size, revenue, hiring and news.
  • API: “Salesforce or HubSpot” matches either; “uses both Salesforce and HubSpot” matches only companies with both.
  • Fixed: A technology given by name with is_enable_similarity_search matches that product and its own products — “Salesforce” also finds Salesforce Desk — instead of look-alikes such as Shopify.
  • API: Company Search takes a plain-language query — e.g. “Food & Beverage companies in Singapore that recently expanded” — and turns it into industry, technology, HQ country or region, head-count, revenue, hiring and news-event filters. Filters you send yourself still win.
  • API: A part of the sentence no filter can express, such as ownership, comes back in metadata.unmatched_criteria instead of being silently dropped. A sentence with nothing to search returns no results with metadata.nl_no_intent: true, never the whole database.
  • API: News Search filters by publisher with sources and exclude_sources — the publisher domain on each article’s source, e.g. bbc.co.uk. A full URL or www. address works too.
  • API: News Search leaves out articles that mention a word with exclude_search_terms (also accepted as exclude_keywords).
  • Fixed: A single string sent for search_terms — or for keyword, keywords or query — now searches that word. Before, it was accepted and the filter did nothing.
  • Fixed: Two names for the same list filter in one request are both applied. On People Search, titles and job_titles together now search every title given; before, one of them was dropped.
  • New: Docs now ship in Russian, Arabic, Spanish, German, French, and Portuguese, alongside existing English, Chinese, Japanese, and Korean — 10 languages total.
  • New: What a Company Profile Contains — hiring, tech stack, ad activity, news, and people, each with a real screenshot and its endpoint, in every language.
  • Improved: The Expansion guides now show real product screenshots (the market map, company list, signal feed, competitor comparison) next to the explanations, replacing an outdated hero image and abstract-only diagrams.
  • New: Enums & Constants — every fixed value the API accepts or returns on one page: seniority ranks, job functions, ad sources and formats, reach tiers, publisher platforms, signal types, management levels.
  • New: Search guides for Job Search, News Search and Advertisement Search — filter tables, response walkthroughs and copy-paste recipes.
  • API: Job Search documents functions, seniority_ranks, launch_dates, location_ids, created_at and is_ascending_order. Response rows now declare functions, seniority_rank, source_type, base_salary, experience_requirement, education_requirement and employment_type.
  • API: Advertisement Search documents active_dates, reach_tiers, exclude_source_types, created_at, advertisement_search_id and is_ascending_order. source_types is corrected — it filters results (not only enrichment) and accepts tiktok and apple. Rows now declare advertisement_format_normalized, advertiser, advertisement_url, is_company_matched and the total_impressions triple; metadata documents applied_source_types, unsupported_source_types, coverage_notes and skipped_source_types.
  • API: News Search documents published_at, news_search_id and is_ascending_order, and declares every row field including expansion_signals (returned when is_expansion_signal_available is set — this reverses the v2.3.1 removal, which was made before the flag shipped).
  • API: People Search documents exclude_people_titles, exclude_people_locations, exclude_departments, exclude_department_functions and company_exclude_locations.
  • API: Company Search documents social_media and advertisement_status.
  • API: Every search endpoint now documents metadata.ignored_fields — unrecognised body keys are dropped, not rejected, and listed there. Job, News and Advertisement Search also declare pagination and a typed metadata block instead of a free-form object.
  • Docs: Four schemas (job_exclude_locations, advertisement_target_locations, advertisement_exclude_target_locations and domain_search_ids on Expansion Rankings) wrote a description next to a $ref, which OpenAPI 3.0 silently discards. They now render.
  • API: Expansion Signal Search (POST /expansions/signals/search) is now documented — query the raw, dated signal rows behind a company’s stage instead of the companies they roll up into.
  • API: Expansion Lookup (POST /expansions/lookup) is now documented — the deterministic sibling of Expansion Search that never auto-relaxes your filters, for dashboards and scheduled jobs that need reproducible results.
  • API: Monitors watching expansions now have a documented filter vocabulary and webhook payload. See Setting up Webhooks.
  • API: is_include_metadata is documented on Company Expansion Detail, Compare, Summaries and Rankings. API-key traffic is lean by default — set it to true to receive confidence_score and the full model detail.
  • API: Expansion error codes (40043, 40360, 40435, 40436) added to Status Codes.
  • Removed: The /companies/{jobs,news,advertisements}/export reference pages. Export returns a CSV attachment against a separate data_export_credit balance and returns nothing that the corresponding Search endpoint does not already return as JSON — use Search with pagination instead.
  • Removed: The /people/enrichment reference page, which documented an endpoint that was never released. To enrich a person, call People Lookup with is_enrichment_available: true.
  • Docs: profile_id removed from every request body. Your API key already identifies your workspace, and the parameter was ignored on API-key requests.
  • API: Similar-company and similar-people search now document the reference identifier they require. Previously /companies/search/similar returned 41847 Missing parameter for every documented parameter combination.
  • API: Company Enrichment documents the jobs, news, advertisements and similar_companies arrays it returns alongside the company record, and warns that the call routinely takes 30–60 seconds.
  • API: Eight endpoints now declare the top-level metadata they return, including the profile block with credit, topup_credit and total_credit_cost.
  • API: Company identifier endpoints document all nine accepted identifiers, adding tiktok_url, wantedly_url, tw104_url, rocketpunch_url, remember_url and youtrust_url.
  • Docs: 41847 Missing parameter — the API’s most common error — added to Status Codes.
  • Docs: Authentication now covers the User-Agent requirement. Clients with a generic user agent are blocked at the edge with HTTP 403 and error code: 1010, which is easily mistaken for a bad API key.
  • Docs: Rate limit documents the usage and quota fields returned by Profile Usage, including how total_max_* applies the licence multiplier.
  • API: Expansion filters (stages, signal_types, signal_strengths, freshness, momentum, polarity) now list their allowed values, and each warns that an unrecognised value is silently discarded rather than rejected — dropping the filter on some parameters and matching nothing on others.
  • API: momentum accepts advancing, steady and pulling_back. The directions values in Expansion Reference (retreating, new) are response values on stage.direction and were never valid as a filter.
  • API: News Insights corrected — mentions, topics, sources and top_source are integer/string fields inside data.totals, not top-level arrays. topics and sources are counts of distinct values; the per-item lists are category_breakdown and market_breakdown.
  • API: Advertisement Insights corrected — postings[] uses the abbreviated keys r, m, ch, fo, n; reach_tiers[] is a {slug, label} catalog with no counts; creatives[] documents all ten fields including image_url, cta and has_video.
  • API: Channel template parameters keys vary by channel_type_slug — email, LinkedIn and Twilio templates each carry a different set.
  • Docs: Removed response fields the API does not return: referral_code from User, similarity_score from Similar People, funding_status and crunchbase_url from LinkedIn Company Lookup, expansion_signals from News Search, and occurs_at / occurs_until from Expansion Signal Search.
  • Docs: The status-code table has been rebuilt from the API’s error table. Nine codes were wrong: 40075, 40076, 40091, 40092 and 40095 were documented for pagination and quota failures but are really 41675, 41676, 41691, 41692 and 41695 at HTTP 416 — and each documented number is a live code for something unrelated. 40003, 40602 and 40603 are really 40303, 40632 and 40633; 40099 does not exist.
  • Docs: HTTP 416 is now documented. Pagination and quota overflows return 416 with a 416xx code, never a clamped result set.
  • Docs: Added the monitor error family (40020–40035), including 40021 — detection_mode cannot be changed after a monitor is created.
  • API: per_page caps at your plan’s max_search_per_page (25 on most plans); 26 returns HTTP 416. page caps at max_search_page. Both limits, and every other plan ceiling, are returned by Profile and are now listed on Rate limit.
  • API: people_contact_types accepts exactly email-work, email-personal and phone. An unrecognised value is not rejected — it returns HTTP 200 with emails: null and zero credit cost, which is indistinguishable from a person having no contact data.
  • API: Redemption responses return null, not [], for emails and phones when nothing is found.
  • API: Channel template create parameters are now documented — channel_node_id is a UUID from Channel Template Types, and it determines which parameters keys are valid. delete takes numeric channel_template_id values and removes one version at a time.
  • API: Monitor webhook validation performs a real signed delivery; a URL that only answers GET still fails, and details returns the upstream response body.
  • New Feature: Market Expansion API. Track which companies are entering which markets, and how far along they are — a four-stage ladder (Exploring → Committing → Expanding → Scaling) built from real hiring, news, advertising, cloud-infrastructure, and event signals. Search by corridor with froms / tos, drill into a single company’s market entry, and compare peers. Start with the quickstart.
  • New Feature: Natural-language search. Pass a plain-English query to Expansion Search (“fintech companies expanding into the UK”) and Pubrio interprets it into filters — with optional AI match explanations grounded in each company’s real signals via is_explain_match.
  • API: Results now default to a relevance order that puts corroborated movers (multiple independent signal types) first; pass sort_by: "recent" for pure recency.
  • API: Monitors can now watch expansion signals (signal_types: ["expansions"]) alongside jobs, news, and advertisements, and a monitor can be drafted from a plain-English sentence via Monitor Interpret.
  • API: Monitor lifecycle is now a single status field (draft / active / paused / inactive), replacing the previous is_active / is_paused booleans in requests and responses.
  • New Feature: Monitors. Automated signal detection with real-time delivery — track job postings, company news, and ad campaigns across millions of companies without building your own polling pipeline. Define filters once, and Pubrio scans, enriches, and delivers matching signals to your webhook, email, or outreach sequence.
  • New Feature: Two Detection Modes. Choose between Signal First (broad market scanning) and Company First (track named accounts) to match your prospecting workflow.
  • New Feature: Automatic People Enrichment. Each monitor trigger can automatically find and redeem contacts at matched companies — multi-layer enrichment with configurable filters for management level, department, and title.
  • API: Added 15 new Monitor endpoints — full CRUD, statistics, charts, detection logs, webhook validation, and test processing. See the Monitor API reference.
  • API: profile_id is no longer required in request bodies. The API key now includes workspace information. The parameter is still accepted for backward compatibility.
  • API: Added operationId, summary, description, and tags to all 59 API endpoints for improved AI agent and MCP tool compatibility.
  • Docs: Enabled llms.txt for AI crawler discovery.
  • New Feature: AI Smart Lists (Beta). Users can now upload CSVs and view them in a spreadsheet interface where Pubrio fills in missing columns automatically.
  • Data: Added 3 million new verified entities in the DACH region (Germany, Austria, Switzerland).
  • API: Faster response times (latency reduced by 200ms) for the /enrich/company endpoint.
  • New Feature: Ads Search Intelligence. We now index ad transparency centers and paid search repositories. You can now see if a company is running ads, where they are spending, and what keywords they are targeting.
  • Improvement: Enhanced “Tech Stack” detection for companies using non-standard localized software in LATAM.

2025 Archive: The Partner Year

2025 was defined by our major ecosystem integrations, bringing Pubrio data to the platforms you use every day.
  • Integration: Ottokit. Launched the native connector for autonomous agent workflows.
  • Integration: Databar. Added Pubrio as a verified provider in the Databar marketplace for no-code research.
  • Integration: Stripo. Enabled “Push to Sequence” functionality, allowing design teams to sync HTML templates directly to Pubrio workflows.
  • Feature: Dynamic Variable Injection. Allowed generic placeholders in templates to be resolved with real-time Pubrio data upon sending.
  • Integration: Clay Native Integration. Became a default provider in the Clay enrichment menu.
  • Data: Expanded the “Invisible 70%” coverage to include 15 new local registries across Asia-Pacific.
Last modified on October 23, 2026