PR TIMES Sales & Investment Signal Classifier avatar

PR TIMES Sales & Investment Signal Classifier

Pricing

from $0.00005 / actor start

Go to Apify Store
PR TIMES Sales & Investment Signal Classifier

PR TIMES Sales & Investment Signal Classifier

An Apify Actor that searches PR TIMES press releases by keyword or industry, returning company name, industry, and official release type, plus simple tags for sales-timing signals like funding, partnerships, M&A, new offices, major contracts, IPOs, and executive changes. Pay-per-event pricing.

Pricing

from $0.00005 / actor start

Rating

0.0

(0)

Developer

coco zizi

coco zizi

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

11 hours ago

Last modified

Share

Searches PR TIMES press releases by keyword or industry category and returns each release tagged with the company name and PR TIMES' official classification (release type, business category, keyword tags), plus a simple tag for sales-approach / investment-timing signals such as funding, business alliances, M&A, new office openings, large orders, IPOs, and personnel changes. Pay-per-event pricing.

Rather than dumping a raw list of press releases, this Actor structures each individual release as a "company move" and adds sales-lead / investment-signal value on top — the differentiation point of this Actor (same stack as our BOOTH and SUUMO Actors: JavaScript ESM, Apify SDK, Pay-per-event pricing).

⚠️ Disclaimer (please read)

  • This Actor automatically retrieves information that is publicly available on PR TIMES. You are responsible for how you retrieve and use this data.
  • PR TIMES' Terms of Use (general terms and press terms) contain a clause prohibiting the use of corporate content for paid purposes. If you publish or operate this Actor commercially / with Pay-per-event pricing, please make that decision with the understanding that it may conflict with that clause. The developer makes no legal warranty on this point. How you scope the release (private / restricted / public on the Store) is a separate decision you should make with this contractual risk in mind.
  • The site owner's Terms of Use, robots.txt, or access blocking could change without notice, which could stop this Actor from working or change its output unexpectedly.
  • "Sales timing signal" tags are a simple estimate based on keyword matching against PR TIMES' official keyword/classification tags and the headline/description — they are not guaranteed to be accurate or exhaustive. Please verify the actual release body before acting on any sales or investment decision.

Facts confirmed during pre-build research (as of August 6, 2026)

  • robots.txt: User-agent: * / Allow: / — crawling is allowed across the board except for the "like count" API (https://prtimes.jp/robots.txt).
  • CDN / bot protection: The site runs behind Fastly (Via: 1.1 varnish, X-Served-By: cache-nrt-*); no Cloudflare-style JS challenge or CAPTCHA was observed. Main content is server-side rendered by Next.js and can be fetched with a regular HTTP client (no headless browser needed). Note this was only verified with single, low-frequency requests — rate-limiting behavior under sustained high-volume access has not been tested.

Privacy / PII design

Some PR TIMES press release bodies were confirmed to contain a section such as "Contact for this release" with an individual staff member's name and email address written as free text (not a labeled, structured field — it's embedded in the prose). By contrast, the "Company Overview" block at the end of an article (representative name, address, phone number, etc.) is explicitly labeled by PR TIMES itself as the company's public information, which is a different kind of data from the "direct personal contact info" our SUUMO Actor was designed to guard against.

With that in mind, this Actor applies two layers of defense:

  1. Limiting how much body text is captured (extractBodyParagraphs in src/prtimesClient.js): paragraph collection stops as soon as a heading containing "contact/inquiry"-type wording is reached, and only the first 400 characters are kept as bodyExcerpt.
  2. A safety net right before output (src/privacyFilter.js): free-text fields such as bodyExcerpt, headline, and description are scanned for email-address / phone-number-like regex patterns and person/contact labels (e.g. "Contact:", "Person in charge:"); any match nulls out that field. Detections are recorded in the output's personalInfoRedactions field. companyOverview (the Company Overview block) is intentionally excluded from this safety net, since it is the company's own public information rather than an individual's contact details.

This was verified against an actual article that contained a staff member's name and email address (a Nagoya Chamber of Commerce and Industry IPO seminar announcement) — the bodyExcerpt was confirmed to not include that information. That said, future changes to PR TIMES' markup or heading wording could introduce PII into an unexpected field, so always review the output before redistributing it externally.

What it does

  • byKeyword mode: search press releases by keyword (e.g. "funding", "DX")
  • byCategory mode: search press releases by industry category ID (top level, optionally narrowed to a sub-category)
  • For each release, it attaches:
    • Company name, PR TIMES' official release type (one of 7 categories: Product/Service, Event, Campaign, Corporate/Management Info, Survey Report, People, Other), business category (industry, top-level + sub-level), and keyword tags (PR TIMES' own official tags on the release)
    • Sales timing signals (salesTimingSignals): tagged when a keyword match is found for funding / business alliance-collaboration / M&A-acquisition-merger / new office-store opening / large order- contract signing / IPO / personnel change-management reshuffle (src/classify.js)
    • Company overview (address, representative name, capital, listing status, etc.) and a body excerpt (first 400 characters, contact section excluded)
  • Turning on onlySalesSignal limits output and billing to releases where a signal was detected

Input parameters

ParameterTypeDefaultDescription
modestringbyKeywordbyKeyword (search by keyword) / byCategory (search by industry category)
keywordstring""Search keyword, used when mode is byKeyword
businessCategoryIdstring""Top-level industry category ID, used when mode is byCategory (e.g. "015")
businessCategorySubIdstring""Sub-category ID, used when mode is byCategory (optional, e.g. "050")
onlySalesSignalbooleanfalseWhen on, only outputs and charges for releases with a sales timing signal
maxItemsinteger20Cap on the number of releases output/charged (max 200)
maxDetailFetchesinteger60Safety cap on how many detail pages are actually fetched from the search results (max 500)
requestDelayMsinteger1500Delay between requests in ms. Cannot be set below 1000ms for safety

For businessCategoryId/businessCategorySubId, open the target category page (https://prtimes.jp/main/html/searchbiscate/busi_cate_id/[top-level]/lv2/[sub-level]/) and read the ID off the URL.

Example output

The following is actual output from a real run of this Actor (as of August 6, 2026, keyword "資金調達" / "funding"). Company names, headlines, and body text are naturally in Japanese, since that's the language of the source data.

{
"sourceUrl": "https://prtimes.jp/main/html/rd/p/000000471.000032589.html",
"companyName": "フォースタートアップス株式会社",
"headline": "【STARTUP DB】調査結果 スタートアップ資金調達金額ランキング(2026年7月)",
"description": "【STARTUP DB】調査結果 スタートアップ資金調達金額ランキング(2026年7月) フォースタートアップス株式会社のプレスリリース",
"datePublished": "2026-08-06 08:00:02",
"dateModified": "2026-08-06 09:44:57",
"releaseType": { "id": "05", "label": "調査レポート" },
"businessCategory": {
"major": { "id": "015", "label": "ビジネス・コンサルティング" },
"minor": { "id": "50", "label": "経営・コンサルティング" }
},
"businessCategoriesAll": ["経営・コンサルティング", "政治・官公庁・地方自治体"],
"keywords": ["ランキング", "資金調達", "スタートアップ", "投資", "CO2", "生成AI", "自動運転", "成長産業", "起業家"],
"salesTimingSignals": [
{ "type": "funding", "label": "資金調達", "matchedTerms": ["資金調達"] }
],
"isSalesTimingSignal": true,
"companyOverview": {
"url": "https://forstartups.com/",
"industry": "情報通信",
"headquartersAddress": "東京都港区麻布台1-3-1 麻布台ヒルズ 森JPタワー 31F",
"phone": "03-6893-0650",
"representativeName": "志水雄一郎",
"listingStatus": "東証グロース",
"capitalYen": "2億3900万円",
"establishedYearMonth": "2016年09月"
},
"bodyExcerpt": "【STARTUP DB】調査結果 スタートアップ資金調達金額ランキング(2026年7月) フォースタートアップス 成長産業支援事業を推進するフォースタートアップス株式会社(本社:東京都港区、代表取締役 CEO:志水 雄一郎・代表取締役 COO:恒田 有希子 以下、フォースタートアップス)は、継続的にスタートアップ動向に関する調査を行い...",
"disclaimer": "PR TIMES上の公開情報を基に自動生成した参考データです。取得・利用は利用者ご自身の責任で行ってください。...",
"scrapedAt": "2026-08-06T09:50:00.000Z",
"personalInfoRedactions": []
}

Classification & signal-detection logic

  1. Company name, headline, publish date, and PR TIMES' official "release type" / "business category" are read from the JSON-LD (schema.org NewsArticle / BreadcrumbList) embedded in each article page (src/prtimesClient.js). This structured data is prioritized because it's less exposed to CSS class hash changes than markup-based scraping.
  2. Keyword tags and the Company Overview block are extracted by matching dt/dd label text (the same label-based extraction approach used in our SUUMO Actor).
  3. PR TIMES' own keyword tags, the headline, description, and business category names are scanned against a sales-timing-signal keyword dictionary (src/classify.js) to attach salesTimingSignals.
    • The dictionary covers 7 signal types: funding, business alliance/collaboration, M&A/acquisition/ merger, new office/store opening, large order/contract signing, IPO, and personnel/management change.
    • This is a keyword-match estimate only, and can both over- and under-detect.

Pricing (Pay-per-event)

EventPriceTrigger
Actor Start (apify-actor-start)$0.00005Once per run (Apify's standard synthetic event)
Release classified (release-classified)$0.015Per release output, with company name and official classification
Sales timing signal detected (sales-timing-signal-detected)$0.045Charged in addition to release-classified for any release where a sales timing signal was detected

A release with a detected signal costs $0.06 in total; a release with no signal costs $0.015.

How the price was set (measured on Apify, August 6, 2026)

We ran this Actor twice with production-like input (byKeyword mode with "funding" / 資金調達, and byCategory mode with one industry category, 10-15 items each) and checked Apify's measured real infrastructure cost (usageTotalUsd, covering Compute Units, data transfer, and storage writes).

RunItems outputSignals detectedDurationReal infra costCost per item
byKeyword ("資金調達"/funding)1010/1022.2s$0.0013416$0.0001342
byCategory (1 industry)156/1528.3s$0.0017052$0.0001137
Blended2516/25$0.0030468$0.0001219

About 92% of the cost is ACTOR_COMPUTE_UNITS (storage writes etc. are negligible). Importantly, signal detection (src/classify.js) is just a regex scan over data already fetched — it makes no additional HTTP requests, so there is effectively no infrastructure cost difference between a release with a signal and one without. That means the price gap is not cost-based; it's set based on delivered value ("this tells you why to reach out to this company right now"), following the same approach as our SUUMO Actor (which priced $0.08 against a measured infra cost of about $0.0004/item, roughly a 200x margin):

  • release-classified is set to $0.015, based on the higher of the two measured per-item costs ($0.0001342/item), which is still more than 100x that figure (112-132x across the two runs).
  • sales-timing-signal-detected adds essentially zero infrastructure cost, so a cost-based calculation doesn't apply here. Since a genuine sales opportunity signal is worth more than a plain classification, it's priced at an additional $0.045 (3x the base event, 4x total for a signal-tagged release). That said, salesTimingSignals is a simple keyword-dictionary estimate with no accuracy guarantee, so it is priced well below what a commercial lead-generation service would typically charge (often $1 to tens of dollars per lead).

Load management

There's a default 1500ms delay between requests (search results list and detail pages). Configurable via requestDelayMs, but it cannot be set below 1000ms for safety.

Known limitations / things to verify before production use

  • The selectors and URL patterns in src/prtimesClient.js were verified against real PR TIMES response HTML (keyword search pages, business category pages, article detail pages) as of August 6, 2026. PR TIMES' markup may change over time; if this stops working, run npm run test-connectivity to inspect the actual response and adjust accordingly.
  • Keyword search (byKeyword) only covers the first page of results. Pagination on PR TIMES' keyword landing page (/topics/keywords/{keyword}) is JS-driven (a "load more" button), and this v0.1 does not crawl additional pages. If you need a larger volume, byCategory mode with businessCategoryId may surface a wider pool of candidates (/main/html/searchbiscate/busi_cate_id/.../ does support normal link-based pagination, but this v0.1 only covers its first page as well).
  • salesTimingSignals is a simple keyword-dictionary estimate. Wording not covered by the dictionary (spelling variants, English terms, etc.) will not be detected. The dictionary can be tuned via SIGNAL_DEFINITIONS in src/classify.js.
  • The official PR TIMES "release type" taxonomy (release_type_id) is assumed to be the 7 categories (01-07) actually confirmed from real articles. If PR TIMES adds or changes categories in the future, releaseType.label will still follow along (since it uses the label text from the page link as-is), but the sales-signal dictionary's mapping to any new category would need a fresh review.
  • A "full sync" feature that crawls everything across multiple runs (equivalent to our BOOTH Actor's startPage/SYNC_STATE) is not implemented.