※本記事にはアフィリエイトリンクが含まれます。
n8n スクレイピングを試み始めたのが2ヶ月前だった。競合サイトの価格を毎日チェックするために を使い始めたのだが、「ノーコードで自動化できる」という触れ込みを信じて始めたはいいが、最初の2週間はほとんど詰まりっぱなしだった。
ただ、静的サイトに限定して使う分には、n8n スクレイピングは今でも十分実用に耐える。定期実行でデータをスプレッドシートに蓄積するフローを3週間安定稼働させている。
この記事では、そのフローの作り方と、実際に詰まったポイントを書く。
この記事でわかること:
- n8n でスクレイピングできること・できないことの区別
- HTTP Request + Extract HTML + Google Sheets の組み合わせによるデータ蓄積フロー
- Schedule トリガーで毎日自動実行する設定
- 実際につまずいた3つのポイント

n8n でスクレイピングできることとできないこと
まずここを正直に書いておく。n8n はスクレイピング専用ツールではないため、得意な領域と苦手な領域がはっきりしている。
静的サイトなら HTTP Request ノードで取得できる
HTMLをそのままレスポンスとして返してくれる「静的サイト」であれば、n8n の HTTP Request ノードで取得できる。たとえば商品一覧ページのHTMLをGETして、CSSセレクタでデータを抽出するという使い方だ。
対応できるのは以下のケースがメイン:
- 価格情報が HTMLに直接書かれているサイト
- ブログ・ニュースサイトの記事タイトル・URL一覧
- 公開されているリスト系データ(求人・物件・レビューなど)
動的サイト(JavaScriptレンダリング)には追加ツールが必要
JavaScriptでコンテンツを動的に生成しているサイトは、n8n の HTTP Request ノードだけでは対応できない。ページのHTMLを取得しても、肝心のデータ部分が空になってしまう。
これは試してみるまでわからないことが多い。最初に詰まったのもこれだった。競合サイトの商品価格を取ろうとしたら、価格の表示がJavaScript依存で、HTMLにはプレースホルダしか入っていなかった。
動的サイトに対応するには、Apify や Firecrawl といった専用スクレイピングサービスとn8nを組み合わせる方法がある。ただそれはそれで別の話なので、今回は静的サイトに絞って解説する。
実際にやってみた:価格データをシートに毎日貯める
僕が実際に運用しているのは、特定ECサイトの商品価格を毎朝9時に取得して、スプレッドシートに1行ずつ追記するフローだ。5つの商品を監視しているので、1日5行が積み上がっていく。
ワークフローの全体像
使うノードは4つ:
- Schedule Trigger — 毎日9時に起動
- HTTP Request — 対象サイトのHTMLを取得
- Extract HTML Content — CSSセレクタでデータを抽出
- Google Sheets — スプレッドシートに1行追記
順を追って設定手順を説明する。
HTTP Request ノードで HTML を取得する
- n8n のワークフロー画面でノードを追加 → 「HTTP Request」を選択
- Method:GET
- URL:スクレイピングしたいページのURL を入力
- Response Format:Text(HTMLを文字列として受け取る)
実行してみて「Response」の中にHTMLが入っていれば成功。もし空だったり想定外の内容だったりする場合は、そのサイトが動的レンダリングを使っている可能性が高い。
日本語サイトでの注意点として、文字コードの問題がある。HTTP RequestノードのレスポンスがデフォルトでUTF-8として解釈されるが、一部のサイトはShift-JISを使っている。その場合は「Response Format」を「ArrayBuffer」にしてから手動でデコードする処理が必要になる。これは僕もハマった。
Extract HTML Content ノードでデータを絞り込む
- ノードを追加 → 「Extract HTML Content」を選択(旧バージョンでは「HTML Extract」と表示される場合あり。2026年4月時点の名称で案内している)
- Source Data:前のHTMLノードの出力を参照
- Extraction Values:抽出したいデータをCSSセレクタで指定する
CSSセレクタの書き方は、ブラウザの開発者ツール(F12)で対象要素を右クリック →「Copy → Copy selector」で取得できる。CSSセレクタの指定方法についてはMozilla Developer Network(MDN Web Docs)日本語版に詳しい説明があるので参考になる。
たとえば商品名を .product-name h2 というセレクタで取得するなら、こう設定する:
- Key:product_name
- CSS Selector:.product-name h2
- Return Value:Text
複数のデータ(商品名・価格・在庫状況など)を取りたい場合は、Extraction Valuesに複数行追加すればいい。
Google Sheets ノードでスプレッドシートに追記する
- ノードを追加 → 「Google Sheets」を選択
- Resource:Spreadsheet
- Operation:Append Row(ここを間違えて最初はデータが上書きされていた)
- Spreadsheet:対象スプレッドシートを選択
- Sheet:対象シートを選択
- Mapping Column Mode:Map Automatically
「Map Automatically」にすると、前のノードのキー名がそのままスプレッドシートのカラム名として使われる。初回実行時にヘッダー行も自動で作られるので楽だ。
Google アカウントとの連携設定は初回のみ必要。OAuth認証でn8nに権限を付与する。
Schedule トリガーで毎日自動実行する
- ノードを追加 → 「Schedule Trigger」を選択
- Trigger Interval:Days(Days型を選択)
- Trigger at Hour:9(朝9時)
- Trigger at Minute:0
設定後、ワークフローを Activate(右上のスイッチをON)にする。これをしないとScheduleトリガーは動作しない。これも最初に見落として「なぜ動かない?」と30分悩んだポイントだった。

実際に動かしてみてつまずいた3つのポイント
3週間運用してきた中で、最初にハマったのは上記以外にもある。
① データが「追記」ではなく「上書き」になっていた
Google SheetsノードのOperationを「Append or Update」にしていたため、毎回既存データが更新されていた。「Append Row」を選ぶことで解決。地味に1週間気づかなかった。
② 動的サイトに当たってHTMLが空だった
前述の通り、2時間試行錯誤して気づいた。今は事前にブラウザのNetworkタブでGETリクエストのレスポンスを確認してから、n8nで試すようにしている。
③ Scheduleトリガーが動いていなかった
ワークフローをActivateするのを忘れていた。n8nのダッシュボードでワークフロー一覧を見ると、Active/Inactiveが一目でわかるので、設定後は必ず確認する習慣にした。
スクレイピング対策サイトへの対応:Apify・Firecrawl との違い
スクレイピング対策(User-Agentチェック・Bot検出・レートリミット)が厳しいサイトに当たると、n8n の HTTP Request ノードだけでは弾かれることがある。
そういう場合は、 や Firecrawl のような専門サービスと組み合わせる方法がある。これらのサービスはブラウザの実行環境を持っていて、JavaScriptのレンダリングにも対応している。n8nからAPIを呼び出す形で使える。
ただ、これらは追加コストがかかるし、設定も少し複雑になる。まずは n8n 単体で試してみて、どうしても対応できないサイトが出てきた段階で検討するのがいいと思う。
合わせて読みたい

まとめ:n8n スクレイピングはどんな用途に向いているか
正直なところ、n8n はスクレイピング専用ツールではないので、できることには限界がある。
向いているのは:
- 静的サイトからの定期データ取得(価格・在庫監視など)
- データ量が少ない(1回の実行で数〜数十件程度)
- 他の自動化フロー(Sheetsへの保存・通知送信など)と組み合わせたい
向いていないのは:
- JavaScriptレンダリングのサイト(Apify・Firecrawlが必要)
- 大量データの一括取得(100件以上は遅い)
- スクレイピング対策が厳しいサイト
この範囲で使う分には、n8n のスクレイピングはシンプルで実用的だ。複雑な設定不要で、他のワークフローとつなぎやすいのが最大の強みだと思う。
スクレイピングを行う際は、対象サイトのrobots.txtと利用規約を必ず確認すること。サーバーへの過度な負荷をかける行為は法的リスクを伴う場合がある。著作権やスクレイピングの法的解釈については文化庁の著作権制度の概要が参考になる。
※本記事の情報は2026年4月時点のものです。n8nのノード名・UIは更新されることがあります。


コメント