はじめに
BtoB の新規営業で最初にやることは、アプローチ先のリストを作ることだ。業界を絞って、企業を見つけて、連絡先を調べて、スプレッドシートにまとめる。
この中で圧倒的にキツかったのが、連絡先を調べるパートだった。
企業名と URL は Google Maps や業界メディアで比較的すぐ集まる。しかし、その企業に実際に連絡を取るためのメールアドレスや電話番号を確認する作業は、完全に手作業の世界だった。
何がキツいのか
企業の公式サイトを開いて、連絡先を探す。文字にすると簡単だが、実際にやると以下のような問題にぶつかる。
連絡先の場所がサイトごとにバラバラ。
- 会社概要ページにまとめている企業
- お問い合わせページにしか連絡先がない企業
- フッターに電話番号だけ載せている企業
- アクセスページの住所の横にひっそり書いてある企業
- そもそもメールを一切公開せず、フォームしかない企業
1 件ごとに、このサイトのどこに連絡先があるかを探す作業が入る。これが地味に判断力を消耗させる。
1 件あたり平均 5 分かかる。
サイトを開いて、会社概要を見て、なければお問い合わせページを探して、見つけたらスプレッドシートにコピペする。1 件 5 分。10 件で 50 分。50 件で 4 時間。100 件のリストを作ろうとすると丸 1 日が溶ける。
ミスが蓄積する。
30 件を超えたあたりから集中力が落ちてくる。電話番号を 1 桁写し間違える。同じ企業を 2 回調べていたことに後から気づく。コピペしたつもりが抜けていた行がちらほら出てくる。
自分の場合の規模感
2 人体制のスタートアップをやっている。専任の営業はいない。
新規アプローチのために、毎週 30〜50 件の企業に連絡を取りたい。ということは、毎週 30〜50 件分の連絡先を調べる必要がある。1 件 5 分として、毎週 2.5〜4 時間が連絡先調べだけに消える計算になる。
月換算で約 10〜16 時間。2 人しかいないスタートアップで、この時間は致命的だった。
試した方法と、それぞれの限界
① 有料の企業データベース / SaaS
海外ツール(Apollo.io, ZoomInfo 等)と国内のリスト販売サービスを検討した。
| 分類 | 月額 | 問題 |
|---|---|---|
| 海外ツール | $49〜200 | 日本の中小企業のカバー率が低い。メールが見つからない or 情報が古い |
| 国内リスト販売 | 件単価 5〜30 円 | 鮮度が不明。一括購入が前提で、50 件だけ欲しいときのフィットが悪い |
海外ツールは英語圏の企業データベースとしては優秀だが、日本の従業員 50 名以下の企業はほとんど収録されていない。国内サービスは 5,000 件で数万円〜のパッケージ売りが主流で、週 30 件ずつ試行錯誤したい段階には合わなかった。
② クラウドソーシングで外注
CrowdWorks でリサーチ作業を発注してみた。
- 1 件 10〜20 円程度で依頼できる
- 納品まで 2〜3 日かかる
- 品質にバラツキがある(電話番号の桁間違い、フリーダイヤルと代表電話の混同)
- 修正依頼のやり取りで結局自分の時間が取られる
今日中にリストが欲しい、という場面では使えなかった。
③ 自分でスクリプトを書く
①②がダメなら自分で作るしかない。Python で requests + BeautifulSoup を使い、企業サイトのページを取得してメールアドレスと電話番号を正規表現で抜き出すスクリプトを書いた。
最初のバージョンは 100 行程度で動いた。URL のリストを渡すと、各サイトのトップページと会社概要っぽいページを取得し、メールアドレスと電話番号の候補を返してくれる。
ただ、実運用に入ると課題が次々と出てきた。
- サイト構造が企業ごとに違いすぎる。 トップページに連絡先がない企業が大半で、サイト内のリンクを辿って連絡先ページを探す処理が必要になった。どのリンクが連絡先ページかの判定ロジックだけで数百行に膨れた
-
電話番号の誤検出がひどい。 郵便番号(123-4567)、FAX 番号、会員番号がヒットしまくる。
phonenumbersライブラリを入れて種別判定させたらだいぶマシになったが、それでも FAX と代表電話の区別は完璧にはできなかった -
メールのダミー混入。 テンプレートに残った
info@example.comのようなアドレスが紛れ込む。ブラックリストと DNS の MX レコード検証を追加して対処した - エラーハンドリングが肥大化。 タイムアウト、リダイレクトループ、文字化け、robots.txt の確認……まともに動かすために必要な処理がどんどん増え、最終的にスクリプトは 1,000 行を超えた
結果的にスクリプト自体は動くようになったが、メンテに毎週 1〜2 時間使っていた。新しいパターンのサイトに出会うたびに修正が要る。自分ひとりで使う分にはなんとかなっていたが、チームメンバーに使ってもらおうとした瞬間に破綻した。コマンドラインで引数を渡す使い方を説明しても、非エンジニアには無理だった。
気づいたこと
ここまで試して気づいたのは、スクレイピングの技術自体は問題を解決できているということだった。
自作スクリプトでも、大半の企業サイトからメール・電話番号・SNS アカウントを抜き出せていた。精度の問題はあるが、泥臭くチューニングすれば実用レベルに持っていける。
問題は技術ではなく、使い勝手だった。
- コマンドラインでしか動かない
- 環境構築が必要
- 人に渡せない
だったら、ブラウザで URL を入力して検索ボタンを押すだけの Web サイトにすればいい。 裏側でやっていることは自作スクリプトと同じ、サイトをクロールして連絡先を抜き出すだけだ。それを Web UI で包めば、誰でも使える。
作ったもの
URL を入力したら連絡先が返ってくる Web サイトを作った。
入力された URL のサイトを内部的にクロールし、メールアドレス・電話番号・SNS アカウント(Facebook, YouTube, Instagram 等)を検出して返す。企業サイトに SNS リンクが貼ってあれば、それも拾ってくれるので、メールが見つからない企業でも DM 経由でのアプローチ手段が残る。
ブラウザさえあれば使える。アカウント登録も不要。
使い方
- サイトを開く
- 企業の URL を入力
- 検索ボタンを押す
- 10〜30 秒で結果が返ってくる
一括検索モードもあり、URL を改行区切りで最大 20 件まで一度に処理できる。
現時点ではテスト公開中で、有料プランはない。
Before / After
実際に使ってみた感覚:
| 手動 | このツール | |
|---|---|---|
| 1 社あたりの所要時間 | 平均 5 分 | 10〜30 秒 |
| 20 社の連絡先調査 | 約 1.5 時間 | 約 5 分 |
| 作業者のスキル要件 | なし(ただし根気) | なし |
| コスト | 0 円(時間コストは別) | 0 円 |
| コピペミス | 起きる | 起きない |
一番大きいのは、判断を伴う単純作業がなくなったことだ。サイトのどこに連絡先があるか、手動で探し回る必要がなくなった。
精度について正直に書く
万能ではない。以下のケースでは取得できない or 精度が落ちる:
- JavaScript で動的に連絡先を表示している SPA サイト(全体の 2〜3%)
- 連絡先が PDF や画像内にしか記載されていないサイト
- メールアドレスを完全に非公開にし、フォームのみの企業(メールは取れないが、電話番号やフォーム URL は取れることが多い)
体感として、入力した企業の 8〜9 割からは何らかの連絡手段(メール or 電話 or SNS)が取得できる という印象。メールが見つからなくても、電話番号や SNS アカウントで補完できるケースが多い。残り 1〜2 割は手動で補完する前提で使っている。
完璧に全部取れるわけではないが、8 割を自動化して残り 2 割だけ手動でやる、という割り切りで運用すると実用的だった。
まとめ
BtoB 営業のリスト作成で一番時間がかかっていたのは、企業を探すパートではなく連絡先を調べるパートだった。
もともと自作スクリプトで解決していた問題を、Web サイトとして包み直しただけではある。でも、ブラウザで URL を入れてボタンを押すだけ、という形にしたことで自分以外の人にも使えるものになった。
毎週 3〜4 時間の手作業がほぼなくなり、余った時間をメールの文面を練ったりアプローチの仮説検証を回す方に使えるようになったのが一番の成果だと思う。
テスト公開中なので、同じ悩みを持っている方がいたら触ってみてフィードバックをもらえると嬉しいです。
