Web Scrape Anything Automatically (n8n + Apify)
원본 영상: Web Scrape Anything Automatically (n8n + Apify)
한 줄 요약
섹션 제목: “한 줄 요약”코딩 없이 Apify + n8n으로 Google Maps 업체 목록을 주 1회 자동 스크래핑하고, 각 업체 웹사이트에서 이메일까지 추출해 Google Sheets에 적재한다.
핵심 내용
섹션 제목: “핵심 내용”- Apify 계정 생성 — 가입 시 매월 $5 크레딧 제공(리셋). 천 건 스크래핑 기준 약 $6이므로 무료 크레딧으로 대략 800~1,000건 처리 가능.
- n8n 스케줄 트리거 설정 — Cron 노드로 매주 월요일 자동 실행.
- Apify 연동 — HTTP Request 모듈 사용 — n8n에 Apify 전용 모듈이 없으므로 Apify API의 curl 명령을 n8n HTTP Request 노드에 직접 import. Actor ID(URL에서 추출)와 API 키(Apify Settings → API & Integrations)를 입력해 인증.
- Google Maps 스크래핑 1단계 — Apify Store에서 “Google Maps Scraper by Compass” 선택. JSON body에
searchTerm,location,maxCrawlPlaces지정. 테스트 시 maxCrawlPlaces를 5로 제한해 크레딧 소진 방지. - 이메일 추출 2단계 — Google Maps 결과에는 전화번호만 있고 이메일 없음 → 각 업체 웹사이트 URL을 다시 스크래핑. Apify Store에서 Contact Detail Scraper 사용.
- 필터 노드 추가 — 웹사이트 URL이 없는 업체는 제외(
website필드 존재 여부로 필터링). - 루프(Loop) 노드로 순차 처리 — 동시 다중 스크래핑 시 Apify 메모리 한도 초과 오류 발생 → batch size 1로 순차 처리.
- Array Aggregator 노드 — 한 웹사이트의 여러 페이지 결과를 하나로 합쳐 중복 행 방지.
- Google Sheets에 적재 — Append/Update 노드로 업체명, 도시, 업종, 이메일, 전화번호, URL 기록. 중복 방지를 위해 업체 URL을 매칭 컬럼으로 설정.
전술·요소
섹션 제목: “전술·요소”| 항목 | 권장 설정 |
|---|---|
| maxCrawlPlaces | 테스트: 5 / 실운용: 100~200 |
| maxPagesPerURL (Contact Scraper) | 20 |
| maxLinkDepth | 1 (홈페이지 → 연락처 페이지 1단계) |
| maxPagesPerCrawl | 100 (5 사이트 × 20 페이지) |
| maxCostPerRun | $1 (안전 상한) |
| Loop batch size | 1 (동시 실행 방지) |
- JSON body 수정 시 따옴표·쉼표 하나만 빠져도 오류 → 신중하게 편집
- 이메일은 대부분 홈페이지에서 1단계 링크(연락처 페이지) 이내에 존재
수치·사례
섹션 제목: “수치·사례”- Apify 무료 크레딧: $5/월, Google Maps Scraper 기준 약 1,000건/$6 (Apify 공식 표기)
- 테스트 중 maxCrawlPlaces 미설정으로 548건이 스크래핑되어 크레딧 대량 소진 (본인 실측 실수 사례)
- 최종 테스트: 5개 업체 스크래핑 → 웹사이트 방문 → 이메일 추출 → Google Sheets 적재 성공 확인
도구·워크플로
섹션 제목: “도구·워크플로”사용 도구
- Apify (Google Maps Scraper by Compass, Contact Detail Scraper)
- n8n (Schedule Trigger → HTTP Request × 2 → Filter → Loop → Array Aggregator → Google Sheets)
- 최종 연동 옵션: Instantly.ai 또는 Lemlist (콜드이메일 플랫폼)
워크플로 흐름
[Schedule: 매주 월요일] → [HTTP Request] Apify Google Maps Scraper 실행 (landscapers in Toronto) → [Filter] website 필드 존재하는 결과만 통과 → [Loop: batch=1] → [HTTP Request] Contact Detail Scraper (해당 웹사이트 URL 전달) → [Array Aggregator] 페이지별 결과 병합 → [Google Sheets Append/Update] 업체명·도시·업종·이메일·전화·URL 기록Apify ↔ n8n 연동 핵심
- Apify API 엔드포인트:
POST /v2/acts/{actorId}/run-sync-get-dataset-items - curl을 n8n HTTP Request에 import → Actor ID와 Bearer 토큰만 교체
run-sync-get-dataset-items단일 액션으로 실행+결과 수집을 한 번에 처리