당근마켓 지역 광고 분석 스크래퍼 avatar

당근마켓 지역 광고 분석 스크래퍼

Pricing

from $0.50 / 1,000 results

Go to Apify Store
당근마켓 지역 광고 분석 스크래퍼

당근마켓 지역 광고 분석 스크래퍼

지역/키워드 기준으로 당근마켓 동네업체 및 비즈 소식글을 수집하고, 문의/관심/조회/단골 수를 파싱해 우리 광고 vs 경쟁사 광고를 비교 분석합니다.

Pricing

from $0.50 / 1,000 results

Rating

0.0

(0)

Developer

Sun Kwak

Sun Kwak

Maintained by Community

Actor stats

1

Bookmarked

1

Total users

1

Monthly active users

2 months ago

Last modified

Categories

Security

Limited permissions

Share

당근마켓 지역 광고 분석 스크래퍼 (daangn-ad-scraper)

당근마켓 특정 지역 + 키워드 기준으로 동네업체 및 비즈 소식글(광고)을 수집하여, 대표 이미지 URL / 문의 수 / 관심(좋아요) 수 / 조회 수 / 단골(팔로워) 수 / 댓글 수를 파싱하고 우리 업체 vs 경쟁 업체 광고 성과를 자동으로 비교 분석하는 Apify Actor입니다.

이런 분께 유용합니다

  • 당근 비즈니스 광고를 운영 중이며, 우리 지역 경쟁 업체들의 광고 반응을 알고 싶은 소상공인/마케터
  • 특정 업종(헬스, 필라테스, 미용 등)의 지역 내 광고 트렌드를 파악하고 싶은 경우

🔑 필수 입력값: locationSlug 찾는 방법

이 Actor는 동네명-regionId 형식의 지역 코드(locationSlug) 를 입력받아야 합니다. 현재 당근 검색 URL에는 지역 ID가 표시되지 않으므로, 아래의 당근 지역 검색 API로 확인하는 방법이 가장 간단합니다. 로그인이나 개발자도구는 필요하지 않습니다.

  1. 아래 URL의 마지막 지역명을 원하는 동네로 바꿔 브라우저에서 엽니다.
    https://www.daangn.com/kr/api/v1/regions/keyword?keyword=동천동
  2. JSON 응답의 locations에서 name1(시/도), name2(시/군/구), name3(동)을 확인해 원하는 행정구역을 고릅니다. 같은 이름의 동이 여러 지역에 있을 수 있으므로 이름만 보고 첫 결과를 사용하지 마세요.
  3. 선택한 항목의 name과 id를 하이픈(-)으로 연결합니다. 예를 들어 용인시 수지구 동천동의 응답 항목이 다음과 같다면:
    {
    "id": 1694,
    "name1": "경기도",
    "name2": "용인시 수지구",
    "name3": "동천동",
    "name": "동천동"
    }
    최종 locationSlug는 다음과 같습니다.
    동천동-1694

예를 들어 keyword=배곧동 응답은 경기도 시흥시 배곧동의 id를 4245로 반환하므로 배곧동-4245를 입력합니다. ID가 맞는지 추가로 확인하려면 https://www.daangn.com/kr/api/v1/regions/4245/center-coord를 열어 해당 지역의 중심 좌표가 반환되는지 확인할 수 있습니다.

💡 이 절차는 2026-09-21 현재 당근 웹 UI가 지역 선택에 사용하는 /kr/api/v1/regions/keyword API로 검증했습니다. 모바일 앱이 아니라 Safari, Chrome 등 일반 브라우저에서 URL을 여세요.


Input 파라미터

필드타입필수설명
locationSlugstring✅위에서 찾은 지역 코드 (예: 동천동-1694)
searchKeywordsstring[]✅검색할 업종/키워드 배열 (예: ["헬스", "필라테스", "여성전용"])
myBusinessNamesstring[]❌우리 업체명 (경쟁사와 구분해 isMine: true로 표시)
maxBusinessesPerKeywordinteger❌키워드별 검색 결과에서 실제 PROFILE 수집 대상으로 사용할 상위 업체 수. 기본값 및 현재 Task 값은 20, 허용 범위는 1~100
maxPostsPerBusinessinteger❌업체당 최대 수집 게시글 수. 화면의 최신 게시글 링크뿐 아니라 Remix SSR 데이터의 전체 게시글을 포함해 최신순으로 적용 (기본값 존재)
proxyConfigurationobject❌Apify 프록시 설정

출력 데이터

  • business_post 타입 레코드: 개별 광고 게시글의 문의/관심/조회/댓글/단골 수
    • thumbnailUrl: 광고 게시글의 대표 이미지 URL. og:image가 실제 게시글 이미지인지 확인한 뒤 사용하고, 필요하면 페이지의 Remix SSR 이미지 배열 첫 항목으로 보완합니다. 게시글 이미지가 없으면 null입니다.
    • keywordMatches: 이 업체(게시글)가 검색된 모든 키워드와 각 키워드에서의 노출 순위 배열. 한 업체가 여러 키워드로 동시에 검색될 경우(예: "여성전용"에서 4위, "헬스"에서 6위) 정보 손실 없이 전부 기록됩니다.
      "keywordMatches": [
      { "keyword": "여성전용", "searchRank": 4 },
      { "keyword": "헬스", "searchRank": 6 }
      ]
    • keywordMatched / searchRank: 하위 호환용 필드로, keywordMatches 중 순위가 가장 좋은(숫자가 작은) 키워드 하나만 남긴 값입니다. 여러 키워드 분석이 필요하면 keywordMatches를 사용하세요.
    • postedAt: 광고 게시글의 실제 작성 시각(ISO8601). 화면에 보이는 "N일 전" 상대 표시가 아닌, 페이지에 내장된 정확한 값입니다. 게시 시점이 다른 광고끼리 누적 지표(좋아요/조회 등)를 그대로 비교하면 왜곡되므로, 게시 경과일 기준 일평균 비교나 스크래핑 시점 간 증감(delta) 분석에 활용하세요.
  • summary 타입 레코드: 우리 광고(myAds) vs 경쟁사 광고(competitorAds)의 평균 지표 비교

사용법 (로컬 개발)

npm install
npm start

Input 예시는 .actor/input_schema.json 참고. 로컬 실행 시 storage/key_value_stores/default/INPUT.json 파일에 입력값을 넣어서 테스트합니다.

Apify 클라우드 배포

apify login
apify push

주의사항

  • 당근마켓 이용약관 및 robots.txt 준수 확인 필요
  • 검색은 locationSlug의 지역 ID와 쿠키를 명시한 당근 search/local-profile route를 사용합니다. Remix SSR 결과가 비어 있으면 route가 제공한 viewport로 local-profiles/search API를 호출하며, 이전 JSON-LD(ItemList) 구조도 하위 호환으로 지원합니다 (외부 검색엔진 경유 없음).
  • 검색 API가 반환한 전체 결과 수(total)는 실행 로그의 전체 N건으로 표시됩니다. 실제 PROFILE 수집 대상은 각 키워드 결과에 result.items.slice(0, maxBusinessesPerKeyword)를 적용한 상위 항목뿐이며, 기본값 및 현재 Task 값 20이면 키워드별 상위 20개 업체만 수집합니다.
  • 일부 키워드의 요청이나 구조 파싱이 실패하면 해당 키워드만 warning 후 건너뜁니다. 정상 파싱된 0건은 성공으로 처리하지만, 모든 키워드가 기술적으로 실패하면 데이터 신뢰성을 위해 Run을 실패 처리합니다.
  • 개인 식별 정보(채팅 문의 내용, 연락처 등)는 수집하지 않음 — 공개된 집계 수치(문의/관심/조회/단골 수)만 수집
  • 검색 결과는 최대 300건까지 노출되는 것으로 확인됨 (매우 인기 키워드의 경우 일부 누락 가능)