콘텐츠로 이동

Web Scrape Anything Automatically (n8n + Apify)

원본 영상: Web Scrape Anything Automatically (n8n + Apify)

코딩 없이 Apify + n8n으로 Google Maps 업체 목록을 주 1회 자동 스크래핑하고, 각 업체 웹사이트에서 이메일까지 추출해 Google Sheets에 적재한다.

  1. Apify 계정 생성 — 가입 시 매월 $5 크레딧 제공(리셋). 천 건 스크래핑 기준 약 $6이므로 무료 크레딧으로 대략 800~1,000건 처리 가능.
  2. n8n 스케줄 트리거 설정 — Cron 노드로 매주 월요일 자동 실행.
  3. Apify 연동 — HTTP Request 모듈 사용 — n8n에 Apify 전용 모듈이 없으므로 Apify API의 curl 명령을 n8n HTTP Request 노드에 직접 import. Actor ID(URL에서 추출)와 API 키(Apify Settings → API & Integrations)를 입력해 인증.
  4. Google Maps 스크래핑 1단계 — Apify Store에서 “Google Maps Scraper by Compass” 선택. JSON body에 searchTerm, location, maxCrawlPlaces 지정. 테스트 시 maxCrawlPlaces를 5로 제한해 크레딧 소진 방지.
  5. 이메일 추출 2단계 — Google Maps 결과에는 전화번호만 있고 이메일 없음 → 각 업체 웹사이트 URL을 다시 스크래핑. Apify Store에서 Contact Detail Scraper 사용.
  6. 필터 노드 추가 — 웹사이트 URL이 없는 업체는 제외(website 필드 존재 여부로 필터링).
  7. 루프(Loop) 노드로 순차 처리 — 동시 다중 스크래핑 시 Apify 메모리 한도 초과 오류 발생 → batch size 1로 순차 처리.
  8. Array Aggregator 노드 — 한 웹사이트의 여러 페이지 결과를 하나로 합쳐 중복 행 방지.
  9. Google Sheets에 적재 — Append/Update 노드로 업체명, 도시, 업종, 이메일, 전화번호, URL 기록. 중복 방지를 위해 업체 URL을 매칭 컬럼으로 설정.
항목권장 설정
maxCrawlPlaces테스트: 5 / 실운용: 100~200
maxPagesPerURL (Contact Scraper)20
maxLinkDepth1 (홈페이지 → 연락처 페이지 1단계)
maxPagesPerCrawl100 (5 사이트 × 20 페이지)
maxCostPerRun$1 (안전 상한)
Loop batch size1 (동시 실행 방지)
  • 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 단일 액션으로 실행+결과 수집을 한 번에 처리