Google 검색 URL 매개변수 및 연산자: 2026 목록 (50개 이상)

2026년 구글 검색 URL 매개변수 및 연산자에 대한 완전한 참조 자료로, 변경된 사항, 새로운 기능, SERP API와의 연동 방법을 다룹니다.
12 분 읽기
Google Search URL Parameters & Operators blog image

Google은 2025년 9월 사전 경고 없이 num 매개변수를 폐지했습니다. 자바스크립트 렌더링이 필수화되었으며, AI 개요 기능이 200개 국가 및 지역으로 확대 적용되었습니다. Google을 스크래핑하는 경우, 이제 원시 HTTP 요청은 빈 응답 또는 저하된 응답을 반환하며, num 기반 페이지네이션은 작동하지 않고, AI 생성 콘텐츠가 유기적 검색 결과를 화면 하단으로 밀어냅니다.

모든 Google 검색 URL은 ? 뒤에 매개변수를 포함합니다(예: 쿼리 q, 국가 gl, 언어 hl, 시간 필터 tbs 등 수십 가지). 이를 잘못 처리하면 스크래퍼가 잘못된 국가의 데이터를 반환하거나 디버깅이 어려운 빈 결과를 반환합니다.

아래는 중요한 모든 매개변수와 테스트된 코드, 실용적인 예시입니다. 모든 코드는 Bright Data SERP API 라이브 환경에서 실행되었습니다.

요약: 2026년을 위해 꼭 알아야 할 사항

  • 순위 추적: q=...&gl=us&hl=en&pws=0&udm=14&brd_json=1 (비개인화, AI 개요 없음)
  • 페이지네이션: start=10, start=20 등 (페이지당 10개 결과). num은 더 이상 작동하지 않음
  • 시간 필터: tbs=qdr:d (지난 24시간), tbs=sbd:1 (날짜별 정렬), tbs=li:1 (원문 그대로)
  • 신규: udm은 tbm을 확장하여 udm=14 (웹 전용, AI 없음)와 같은 모드를 제공합니다. 현재 둘 다 작동합니다. 둘 다 지원합니다.
  • 필수: 자바스크립트 렌더링. 2025년 1월부터 requests.get() 호출은 빈 결과를 반환함

최소 실행 예시:

curl -X POST "https://api.brightdata.com/request" 
  -H "Content-Type: application/json" 
  -H "Authorization: Bearer <API_TOKEN>" 
  -d '{"zone":"<ZONE_NAME>","url":"https://www.google.com/search?q=web+scraping+tools&gl=us&hl=en&brd_json=1","format":"raw"}'

(URL의brd_json=1은 Bright Data가 Google의 HTML을 구조화된 JSON으로 파싱하도록 지시합니다. 요청 본문의 format: raw는 Bright Data 인프라에서 응답을 그대로 반환하며, 이 경우 brd_json=1로 생성된 파싱된 JSON입니다.)

빠른 참조: Google 검색 매개변수 요약표

매개변수 기능 상태
q 검색어 활성
hl 인터페이스 언어 (en, fr, de) 활성
gl 지리적 위치/국가 (미국, 영국, 인도) 활성
lr 결과를 특정 언어로 제한 활성
cr 결과를 특정 국가에서 호스팅되는 페이지로 제한 활성
num 페이지당 결과 수 사용 중지됨 (2025년 9월)
시작 페이지 매김 오프셋 활성
tbm 검색 유형 (isch, nws, shop, vid) 활성
udm 콘텐츠 모드 필터 (14, 2, 39, 50) 활성 (신규)
tbs 시간 및 고급 필터 (qdr:d, qdr:w) 활성
안전 안전 검색 필터링 활성
필터 중복 결과 필터링 활성
nfpr 자동 수정 비활성화 활성화
pws 개인화된 결과 비활성화 (pws=0) 활성화
uule 인코딩된 위치(도시 수준 타겟팅) 활성화
sclient 검색 클라이언트 식별자 활성 (내부)
kgmid 지식 그래프 엔터티 ID 활성
si 지식 그래프 탭 (불투명한 인코딩된 문자열, 사용자가 생성할 수 없음) 활성 (내부)
ibp 렌더링 제어 (작업, 비즈니스 목록) 활성
ei, ved, sxsrf 내부 추적/세션 토큰 활성 (내부)

Google 검색 연산자 (site:, filetype:, intitle: 등)는 아래 연산자 섹션에서 다루고 있습니다.

로그인 없이 SERP API Playground에서 기본 검색을 시도해 보세요. 전체 매개변수 세트는 API를 직접 사용하세요.

Google 검색 매개변수란 무엇인가요?

Google 검색 매개변수는 쿼리, 위치, 언어 및 결과 필터링을 제어합니다. 이는 SEO 순위 추적, 경쟁사 분석, 광고 모니터링 및 LLM 애플리케이션에 검색 결과를 공급하는 데 중요합니다.

2025년에 변경된 사항: Google은 2025년 4월 ccTLD( google.co.uk, google.de, google.ca와 같은 국가 코드 최상위 도메인) 가 google.com으로 리디렉션될 것이라고 발표했습니다. 적용은 점진적으로 이루어지며, 일부 ccTLD는 여전히 직접 결과를 제공합니다. 어느 쪽이든 현지화를 위해 도메인이 아닌 glhl을 사용하세요.

핵심 검색 매개변수

다음은 거의 모든 요청에서 설정해야 하는 매개변수입니다: 쿼리, 언어, 국가, 페이지네이션.

q – 검색어

검색어는 q에 입력합니다.

https://www.google.com/search?q=bright+data+web+scraping

쿼리 내 공백은 + 또는 %20으로 인코딩됩니다. q 매개변수는 Google 검색 연산자도 지원합니다. 예시:

https://www.google.com/search?q=filetype:pdf+web+scraping+guide
https://www.google.com/search?q=site:github.com+serp+api
https://www.google.com/search?q=intitle:proxy+rotation+tutorial

쿼리 문자열을 올바르게 URL 인코딩하십시오. 특히 비라틴 문자 (중국어, 아랍어, 일본어, 한국어 등)는 반드시 인코딩해야 합니다. 이를 소홀히 할 경우 예상치 못한 결과나 빈 결과가 발생하는 주요 원인입니다. Bright Data의 SERP API를 사용할 때는 항상 URL에서 q 매개변수를 맨 앞에 배치하십시오. Bright Data 문서에서 이를 요구합니다. q 앞에 다른 매개변수를 배치하면 응답 속도가 느려지고 성공률이 낮아질 수 있습니다.

Bright Data의 SERP API 프록시 메서드를 통해:

curl --proxy brd.superproxy.io:33335 
  --proxy-user brd-customer-<CUSTOMER_ID>-zone-<ZONE_NAME>:<PASSWORD> -k 
  "https://www.google.com/search?q=web+scraping+tools&brd_json=1"

JSON 내에 원본 HTML을 보존해야 하는 경우 brd_json=1 대신 brd_json=html을 사용하세요. Direct API는 마크다운, 스크린샷, 경량 파싱 출력 등 추가 출력 형식을 지원합니다.

JSON 응답은 다음과 같습니다(축약됨):

{
  "general": {
    "search_engine": "google",
    "results_cnt": 33500000,
    "search_time": 0.21,
    "language": "en",
    "mobile": false,
    "search_type": "text"
  },
  "input": {
    "original_url": "https://www.google.com/search?q=web+scraping+tools&brd_json=1"
  },
  "organic": [
    {
      "link": "https://www.reddit.com/r/automation/comments/1ncuv8k/best_web_scraping_tools_ive_tried_and_what_i/",
      "title": "제가 사용해 본 최고의 웹 스크래핑 도구 (그리고 제가 배운 점...)",
      "description": "Playwright: 구조화된 자동화 및 테스트에 탁월하지만, 가벼운 스크래핑에는 코드 부담이 다소 큽니다.",
      "rank": 1,
      "global_rank": 5
    }
  ]
}

JSON은 모든 내용을 SERP 섹션별로 그룹화합니다. 자연 검색 결과는 top_adsbottom_ads와 분리되고, 지식 패널은 people_also_ask와 분리되며, 지역 검색 결과는 snack_pack에 포함되고, ai_overview 같은 최신 기능들은 각각 별도의 필드에 배치됩니다. 쿼리에 따라 총 12개 이상의 섹션이 존재합니다.

hl – 호스트 언어

“호스트 언어(host language)”의 약자로, hl은 Google 인터페이스의 언어와 Google이 쿼리를 해석하는 방식을 제어합니다.

https://www.google.com/search?q=coffee&hl=en
https://www.google.com/search?q=coffee&hl=es
https://www.google.com/search?q=coffee&hl=ja

값은 hl=en (영어), hl=fr (프랑스어), hl=de (독일어)와 같은 ISO 639-1 코드 또는 hl=en-gb (영국 영어), hl=pt-br (브라질 포르투갈어), hl=es-419 (라틴 아메리카 스페인어)와 같은 BCP 47 언어 태그입니다.

SERP API를 통해 동일한 검색은 다음과 같습니다:

curl --proxy brd.superproxy.io:33335 
  --proxy-user brd-customer-<CUSTOMER_ID>-zone-<ZONE_NAME>:<PASSWORD> -k 
  "https://www.google.com/search?q=meilleurs+outils+de+scraping&hl=fr&gl=fr&brd_json=1"

이 명령어는 프랑스에서 검색하는 것처럼 프랑스어 쿼리에 대한 프랑스어 결과를 가져옵니다.

gl – 지리적 위치

검색 위치는 결과에 영향을 미칩니다. gl 매개변수는 사용자의 지리적 위치 (검색이 발생한 것으로 보이는 국가)를 시뮬레이션합니다. ISO 3166-1 alpha-2 두 글자 국가 코드를 사용합니다.

https://www.google.com/search?q=pizza+delivery&gl=us
https://www.google.com/search?q=pizza+delivery&gl=gb
https://www.google.com/search?q=pizza+delivery&gl=in

두 국가에서 동일한 검색어를 비교해 보세요:

Same "best restaurants" query with gl=us showing US results (Yelp, Texas, St. Louis) vs gl=jp showing Japan results (Tabelog, Tokyo restaurants)
gl=us는 Yelp와 미국 지역 잡지를 반환합니다. gl=jp를 사용하면 결과에 食べログ(Tabelog)와 도쿄 레스토랑 가이드가 대신 표시됩니다. 동일한 쿼리임에도 결과가 매우 다릅니다.

lr – 언어 제한

머신 러닝을 hl=en으로 검색해도 구글이 관련성이 있다고 판단하면 중국어, 일본어, 독일어 논문도 결과에 포함됩니다. lr 매개변수가 이 문제를 해결합니다. 인터페이스 언어뿐만 아니라 특정 언어로 작성된 페이지로 결과를 제한합니다.

https://www.google.com/search?q=machine+learning&lr=lang_en
https://www.google.com/search?q=machine+learning&lr=lang_en|lang_fr

언어 코드 앞에 lang_ 접두사를 붙입니다(예: 영어는 lang_en, 프랑스어는 lang_fr). 여러 언어를 결합하려면 파이프 (|) 를 사용합니다.

cr – 국가 제한

lr과 유사하지만 콘텐츠 언어 대신 호스팅 국가 로 필터링합니다. 단일 국가에는 cr=countryUS, 다중 국가에는 cr=countryUS|countryGB를 사용하세요. gl과의 주요 차이점: gl은 해당 국가에 있는 것처럼 검색 위치를 지정하는 반면, cr은 실제로 해당 국가에 호스팅된 페이지를 필터링합니다. 정확한 필터링이 필요하면 둘을 함께 사용하세요.

num – 결과 수

num 매개변수는 페이지당 표시되는 검색 결과 수를 제어하는 데 사용되었습니다(예: num=20, num=50, num=100).

스크레이퍼가 2025년 9월 이후 10개 결과만 반환하기 시작했다면, 이 매개변수 변경이 원인입니다. 2025년 9월부터 Google은 num 매개변수를 조용히 비활성화했습니다. 이제 완전히 무시됩니다. Google은 전달한 num 값과 무관하게 페이지당 10개 결과를 반환하며, 오류나 리디렉션 없이 처리합니다. 이로 인해 해당 매개변수에 의존하던 SEO 도구 및 SERP 스크래핑 워크플로가 중단되었습니다. Google 대변인은 “이 URL 매개변수 사용은 공식적으로 지원하지 않습니다”라고 확인했습니다. 2025–2026 변경 사항 섹션에서는 Bright Data의 Top 100 Results 엔드포인트를 활용한 해결 방법을 다룹니다.

이를 직접 확인할 수 있습니다. URL에 num=100이 포함되어 있지만, 반환되는 결과는 10개뿐입니다:

Google search with num=100 in URL still showing pagination, proving only 10 results were returned
URL에 num=100을 포함하여 검색. Google은 여전히 페이지당 10개 결과만 반환하며 완전한 페이지네이션을 적용합니다. 해당 매개변수는 완전히 무시됩니다.

start – 결과 오프셋 (페이지네이션)

Google이 num을 제거했으므로 start가 유일한 기본 페이지네이션 옵션입니다. 결과 오프셋을 설정하여 시작할 결과 위치를 제어합니다.

https://www.google.com/search?q=web+scraping&start=0
https://www.google.com/search?q=web+scraping&start=10
https://www.google.com/search?q=web+scraping&start=20

start=0은 1페이지(기본값), start=10은 2페이지, start=20은 3페이지입니다.

Google은 페이지당 10개의 결과를 반환하므로 start=20은 21~30번째 결과, start=30은 31~40번째 결과를 제공합니다. 여러 페이지에 걸쳐 페이지 매김을 할 때 Google은 페이지 간에 중복되거나 약간 재정렬된 결과를 반환할 수 있습니다. 처리 전에 URL별로 중복을 제거하세요.

SERP API를 통한 페이지 분할:

# 결과 3페이지 가져오기
curl --proxy brd.superproxy.io:33335 
  --proxy-user brd-customer-<CUSTOMER_ID>-zone-<ZONE_NAME>:<PASSWORD> -k 
  "https://www.google.com/search?q=serp+scraping&start=20&brd_json=1"

검색 유형 매개변수

Google은 검색 분야(이미지, 뉴스, 쇼핑, 동영상) 간 전환을 위한 두 가지 매개변수( tbmudm)를 제공합니다.

tbm – 검색 콘텐츠 유형

tbm 매개변수(일반적으로 “to be matched”로 해석되지만 Google은 약어를 확인한 적이 없음)는 원하는 검색 결과 유형을 Google에 알려줍니다. 이 매개변수가 없으면 Google은 기본적으로 일반 웹 검색을 수행합니다.

검색 유형
(비어 있음) 웹 검색 q=커피
isch 이미지 검색 tbm=isch&q=커피
vid 동영상 검색 tbm=vid&q=coffee
nws 뉴스 검색 tbm=nws&q=커피
쇼핑 쇼핑 검색 tbm=shop&q=커피
bks 책 검색 tbm=bks&q=커피

세 가지 검색 유형에 동일한 쿼리 적용:

Same "artificial intelligence" query across three tbm values: default web results with AI Overview, tbm=nws showing news articles, and tbm=shop showing product listings
동일한 쿼리, 다른 tbm 값: 기본 웹 검색(왼쪽)은 AI 개요를 표시하고, tbm=nws (중앙)는 NYT와 가디언의 뉴스 기사를 반환하며, tbm=shop (오른쪽)는 가격과 평점이 포함된 제품 목록을 표시합니다.

인공 지능에 대한 뉴스 검색:

https://www.google.com/search?q=artificial+intelligence&tbm=nws&hl=en&gl=us

기계식 키보드 쇼핑 검색:

https://www.google.com/search?q=mechanical+keyboard&tbm=shop&gl=us

이 모든 검색 유형은 기본적으로 작동합니다. JSON 응답을 파싱할 때 광고는 top_adsbottom_ads 필드로 분리되며, 제품 목록은 popular_products 아래에 표시됩니다. 이는 모두 자연 검색 결과와 구분됩니다. 전용 광고 모니터링은 Google Ads 스크레이퍼를 참조하세요. 여행 및 호텔 매개변수(hotel_occupancy, hotel_dates, brd_dates, brd_occupancy, brd_currency 등)는 Bright Data 전용이며 SERP API 매개변수 참조 문서에 설명되어 있습니다.

udm – 사용자 표시 모드

Google의 최신 콘텐츠 모드 필터는 udm으로, tbm에 추가 결과 유형을 확장합니다. 이는 사용자가 보는 검색 결과의 “모드”를 제어합니다. udm 값은 Google 공식 문서에 존재하지 않습니다. 모두 개발자 커뮤니티가 테스트를 통해 역설계한 것입니다. 아래 값은 안정적이고 널리 사용되지만, Google은 사전 공지 없이 변경할 수 있습니다.

결과 모드 설명
udm=2 이미지 이미지 검색 결과
udm=7 동영상 동영상 결과; tbm=vid의 최신 동등 항목
udm=12 뉴스 뉴스 결과; tbm=nws의 새로운 등가물
udm=14 AI 기능이 없는 클래식 웹 결과
udm=18 포럼 토론 및 포럼 결과
udm=28 쇼핑 쇼핑/제품 결과
udm=36 도서 책 결과; tbm=bks의 최신에 해당하는 항목
udm=39 짧은 동영상 짧은 형식의 동영상 콘텐츠
udm=50 AI 모드 Google의 AI 기반 대화형 검색

가장 주목할 만한 값은 udm=14입니다. 이 값은 Google이 AI 개요나 기타 AI 생성 콘텐츠 없이 전통적인 웹 검색 결과를 표시하도록 강제합니다:

https://www.google.com/search?q=web+scraping+tools&udm=14

기본값과 udm=14의 차이는 즉시 확인됩니다:

Google search results comparison for "what is machine learning" showing default view with AI Overview vs udm=14 with classic organic results from IBM, Google Developers, and Wikipedia
왼쪽: AI 개요가 유기적 검색 결과를 화면 하단으로 밀어내는 기본 SERP. 오른쪽: udm=14는 이를 모두 제거하고 전통적인 파란색 링크가 표시된 깔끔한 “웹” 탭을 보여줍니다.

짧은 동영상 결과의 경우 udm=39를 사용하세요(Google에서 공식 문서화되지 않음; 지역별로 동작이 다를 수 있음):

https://www.google.com/search?q=coffee+recipes&udm=39

AI 모드(udm=50)는 완전히 다른 유형의 검색입니다:

Google AI Mode (udm=50) showing a conversational AI response about learning programming with source citations from Quora, freeCodeCamp, and GeeksforGeeks
Google AI 모드(udm=50): 기존 결과 대신 대화형 AI 응답을 제공하며, 인라인 출처 인용과 후속 질문 제안을 포함합니다.

tbm과 udm은 이미지, 뉴스, 쇼핑에서 중복되지만, udm은 tbm이 지원하지 않는 모드(포럼, 짧은 동영상, AI 모드, 웹 전용)도 포함합니다. 현재 둘 다 작동합니다. 새로운 스크래핑 워크플로를 구축 중이라면 최대 호환성을 위해 두 매개변수를 모두 지원하세요.

필터링 및 정렬 매개변수

tbs – 시간 기반 및 고급 필터

tbs 매개변수(공식 출처는 없으나 일반적으로 “검색 대상”으로 해석됨)는 시간 필터링, 날짜 정렬 및 문자 그대로 일치 기능을 제어합니다.

가장 흔한 용도는 qdr (쿼리 날짜 범위)를 통한 시간 필터링입니다:

시간 범위
tbs=qdr:h 지난 1시간
tbs=qdr:d 지난 24시간
tbs=qdr:w 지난 주
tbs=qdr:m 지난 한 달
tbs=qdr:y 지난 1년

tbs=cdr:1,cd_min:01/01/2025,cd_max:12/31/2025와 같이 사용자 지정 날짜 범위를 설정할 수도 있습니다. 특정 기간 동안 검색 결과가 어떻게 변화하는지 추적하는 데 유용합니다.

시간 필터링 외에도 tbs에는 두 가지 유용한 모드가 있습니다. tbs=sbd:1은 Google이 관련성 대신 날짜(최신순)로 결과를 정렬하도록 강제하여 최근 언급을 모니터링하는 데 유용합니다. tbs=li:1은 문자 그대로의 검색을 활성화합니다. Google은 자동 수정, 동의어 또는 관련 용어 없이 입력한 내용을 정확히 검색합니다.

주제에 대한 최신 뉴스 모니터링 방법:

curl --proxy brd.superproxy.io:33335 
  --proxy-user brd-customer-<CUSTOMER_ID>-zone-<ZONE_NAME>:<PASSWORD> -k 
  "https://www.google.com/search?q=web+scraping+regulations&tbs=qdr:w&brd_json=1"

Google search for "web scraping regulations" with the Tools dropdown open showing "Past week" checked, confirming tbs=qdr:w is active
tbs=qdr:w로 검색하면 “지난 주” 시간 필터가 활성화됩니다(도구 아래에 체크 표시됨). 지난 7일 이내에 게시된 결과만 반환됩니다.

팁: 모든 결과를 얻으려면 filter=0을 tbs 시간 필터와 함께 사용하세요. 이를 사용하지 않으면 Google이 유사한 페이지를 그룹화하여 관련 보도를 놓칠 수 있습니다.

safe – 안전 검색 필터링

safe=active는 노골적인 콘텐츠를 필터링하고, safe=off는 필터링을 비활성화합니다.

https://www.google.com/search?q=photography&safe=active
https://www.google.com/search?q=photography&safe=off

filter – 중복 결과 필터링

filter 매개변수는 Google이 유사하거나 중복된 결과를 클러스터링하는 방식을 제어합니다.

https://www.google.com/search?q=web+scraping&filter=0
https://www.google.com/search?q=web+scraping&filter=1

filter=0은 중복을 포함한 모든 결과를 표시합니다. filter=1 (기본값)은 유사한 페이지를 함께 그룹화합니다. 시간 필터와 함께 사용할 때 가장 유용합니다(위의 tbs 팁 참조).

nfpr – 자동 수정 해제

nfpr=1을 설정하면 Google이 쿼리를 자동 수정하는 것을 중지합니다.

https://www.google.com/search?q=scraping+brwser&nfpr=1

1로 설정하면 Google은 “스크래핑 브라우저를 의미하는 건가요?”와 같은 제안 없이 정확히 입력한 내용만 검색합니다. 의도적으로 오타가 있는 용어, Google이 오타로 인식하는 브랜드명, Google이 수정하려 할 수 있는 기술 용어를 검색할 때 유용합니다. 참고: nfpr=1은 자동 수정만 억제합니다. tbs=li:1 (문자 그대로 모드)은 동의어, 어근 분석, 관련 용어까지 추가로 비활성화합니다. 가장 엄격한 일치를 원한다면 두 옵션을 함께 사용하세요.

Google은 기본적으로 검색 결과를 개인화합니다. pws는개인화 기능의 활성화 여부를 제어합니다.

https://www.google.com/search?q=web+scraping+tools&pws=0

개인화 해제(pws=0)는 사용자마다 결과가 달라 대량 데이터 일관성을 해치므로 중요합니다. 본격적인 SERP 데이터 수집 시에는 항상 pws=0을 포함해 기준선인 비개인화 순위를 확보하세요.

위치 매개변수

대부분의 순위 추적은 gl을 사용한 국가 수준 타겟팅만 필요합니다. 그러나 지역 SEO의 경우 더 정밀한 타겟팅이 필요합니다.

uule – 인코딩된 위치

uule은 gl이 충분히 세분화되지 않을 때 도시 수준의 정밀도를 제공합니다.

uule 값은 Google Ads API 지리적 타겟팅을 기반으로 인코딩된 문자열입니다. 표준 이름 인코딩(Google의 지리적 타겟팅 데이터베이스에서 가져옴) 또는 GPS 좌표 인코딩(위도/경도)을 사용합니다.

https://www.google.com/search?q=best+restaurants&uule=w+CAIQICIGUGFyaXM

uule 값을 수동으로 생성하는 것은 복잡합니다. Google의 Geo Targets 문서에서 위치의 표준 이름을 조회한 후 Google이 요구하는 특정 형식으로 인코딩해야 합니다.

Bright Data의 SERP API를 사용하면 인코딩 과정을 완전히 생략하고 장소명을 가독성 있는 문자열 그대로 전달할 수 있습니다:

https://www.google.com/search?q=best+restaurants&uule=New+York,New+York,United+States

API가 자동으로 조회 및 인코딩을 처리합니다.

국가 수준 타겟팅에는 gl을, 도시 수준의 정밀도가 필요할 때는 uule을 사용하세요. 대부분의 순위 추적에는 gl로 충분합니다. uule은 동일 국가 내 도시별로 결과가 상이한 지역 SEO 감사 시에 사용하세요.

기기 및 클라이언트 매개변수

Google은 모바일과 데스크톱에 대해 서로 다른 결과를 반환합니다. 다음 매개변수는 기기 에뮬레이션 및 브라우저 식별을 제어합니다.

sclient – 검색 클라이언트

거의 모든 Google 검색 URL에서 sclient를 확인할 수 있습니다. 검색을 시작한 검색 클라이언트를 식별합니다. 일반적인 값: gws-wiz (웹 검색), gws-wiz-serp (SERP 시작), img (이미지 검색), psy-ab (Google의 인스턴트/예측 검색 관련). Google 내부 분석에 사용되며 결과에는 영향을 미치지 않습니다.

brd_mobile / brd_browser – 기기 및 브라우저 에뮬레이션

SERP API는 특정 기기에서의 검색을 시뮬레이션하기 위해 brd_mobile을 제공합니다:

기기 User-Agent 유형
0 또는 생략 데스크톱 데스크톱
1 모바일 모바일
iOS 또는 iPhone iPhone iOS
ipad 또는 ios_tablet iPad iOS 태블릿
안드로이드 Android 안드로이드
안드로이드 태블릿 안드로이드 태블릿 Android Tablet
curl --proxy brd.superproxy.io:33335 
  --proxy-user brd-customer-<CUSTOMER_ID>-zone-<ZONE_NAME>:<PASSWORD> -k 
  "https://www.google.com/search?q=best+apps&brd_mobile=ios&brd_json=1"

브라우저 프록시(proxy) 방식으로 brd_mobile을 사용할 때 expect_body 오류가 발생하면 대신 Direct API 방식을 시도해 보세요. 기기 에뮬레이션에 더 안정적인 경향이 있습니다. LangChain 통합도 여기서 잘 작동하는데, Direct API를 통해 device_type을 자동으로 전달하기 때문입니다.

브라우저 유형은 brd_browser로 제어할 수도 있습니다:

  • brd_browser=chrome (Google Chrome)
  • brd_browser=safari (Safari)
  • brd_browser=firefox (Mozilla Firefox, brd_mobile=1과 호환되지 않음)

지정하지 않으면 API가 무작위 브라우저를 선택합니다. 두 매개변수를 조합하여 정확한 기기 + 브라우저 조합을 설정하세요:

curl --proxy brd.superproxy.io:33335 
  --proxy-user brd-customer-<CUSTOMER_ID>-zone-<ZONE_NAME>:<PASSWORD> -k 
  "https://www.google.com/search?q=best+smartphones&brd_browser=safari&brd_mobile=ios&brd_json=1"

고급 및 내부 매개변수

이들 중 어떤 것도 설정할 필요가 없습니다. 이들은 Google의 내부 매개변수입니다. 그러나 Google URL에서 ei, ved, sxsrf가 무엇을 의미하는지 알고 싶다면, 이 섹션에서 설명합니다.

kgmid – 지식 그래프 머신 ID

kgmid 매개변수는 Google 지식 그래프의 결과를 제공하며 q 매개변수를 완전히 대체할 수 있습니다.

https://www.google.com/search?kgmid=/m/07gyp7

이 매개변수는 맥도날드에 대한 지식 그래프 패널을 직접 불러옵니다. 각 개체에는 고유한 기계 ID가 있으며, kgmid를 통해 전달하면 해당 개체의 패널을 가져옵니다.

해당 ID에 대해 Google이 반환하는 패널:

Google Knowledge Graph panel for McDonald's triggered by kgmid=/m/07gyp7, showing entity info, founding date, CEO, and social profiles
kgmid=/m/07gyp7에 대한 지식 그래프 패널: 엔티티 설명, 설립일, 경영진, 소셜 프로필.

브랜드 모니터링 팀은 이를 활용하여 자사 또는 경쟁사에 대한 Google 지식 그래프 패널의 시간 경과에 따른 변화를 추적합니다.

ibp – 렌더링 제어

Google은 일반 검색 결과에 ibp를 사용하지 않습니다. SERP(검색 결과 페이지)에서 특정 요소(특히 Google 비즈니스 목록Google Jobs)의 렌더링 방식을 제어합니다.

https://www.google.com/search?ibp=gwp%3B0,7&ludocid=1663467585083384531

ludocid 매개변수(Google 비즈니스 목록의 고유 ID)와 함께 사용될 때, ibp는 비즈니스 목록의 전체 페이지 보기를 트리거할 수 있습니다.

구직 검색 시 ibp=htl;jobs (URL 인코딩: ibp=htl%3Bjobs)는 전체 채용 목록이 포함된 Google Jobs 패널을 표시합니다:

curl --proxy brd.superproxy.io:33335 
  --proxy-user brd-customer-<CUSTOMER_ID>-zone-<ZONE_NAME>:<PASSWORD> -k 
  "https://www.google.com/search?q=technical+copywriter&ibp=htl%3Bjobs&brd_json=1"

ibp=htl%3Bjobs로 트리거되는 채용 정보 패널:

Google Jobs panel triggered by ibp=htl%3Bjobs showing job listings with filters for Remote, Date posted, and Job type
ibp=htl%3Bjobs 매개변수는 채용 공고, 필터, “팔로우” 옵션이 포함된 Google 전용 채용 정보 패널을 트리거하며, 이 모든 정보는 SERP API를 통해 추출 가능합니다.

htl;jobs 내 세미콜론은 curl 또는 HTTP 클라이언트에서 사용할 때 반드시 URL 인코딩( %3B, 즉 ibp=htl%3Bjobs)되어야 합니다. 적절한 인코딩이 없을 경우 요청이 빈 결과를 반환할 수 있습니다.

ei, ved, sxsrf, oq, gs_lp – 내부 추적 매개변수

이들 중 어느 것도 반환되는 결과에 영향을 미치지 않습니다. URL에서 제거해도 안전합니다. 각 매개변수의 기능은 다음과 같습니다:

매개변수 목적
ei 유닉스 타임스탬프와 불투명한 값을 포함하는 세션 식별자
ved 클릭 추적: 클릭된 SERP 요소, 인덱스 및 유형을 인코딩
sxsrf 인코딩된 유닉스 타임스탬프가 포함된 CSRF 토큰
oq 자동 완성으로 수정되기 전에 입력된 원본 쿼리(예: q=web+scraping+api일oq=web+scrap )
gs_lp 검색 클라이언트 상태와 관련된 내부 세션 데이터
ie / oe 입력/출력 문자 인코딩(거의 항상 UTF-8; 무시해도 무방)
client 검색 클라이언트 유형(예: firefox-b-d, safari); 브라우저 또는 앱을 식별합니다.
소스 검색 소스 식별자(예: 홈페이지의 경우 hp, 모드 전환의 경우 lnms )
biw / bih 브라우저 내부 너비/높이(픽셀 단위); Google이 제공하는 SERP 레이아웃 변형에 영향을 미칠 수 있음

Google 검색 연산자

검색 연산자는 q 매개변수 내부에 있는 특수 명령어로, 도메인, 파일 유형, 제목, URL 또는 정확한 구문에 따라 결과를 필터링합니다. Google은 검색 정교화 도움말 페이지에서 일부를 설명합니다.

이들은 URL 매개변수와 구별됩니다: 연산자는 q안에 들어가지만, 매개변수는 URL에서 별도의 키-값 쌍입니다. 스크래핑 및 데이터 수집에 가장 유용한 연산자는 다음과 같습니다:

연산자 기능 예시
site: 특정 도메인으로 제한 site:github.com python scraper
filetype: 파일 유형으로 제한 filetype:pdf 웹 스크래핑 가이드
intitle: 페이지 제목 내에서 검색 intitle:serp api 비교
URL 포함: URL 내에서 검색 inurl:api 문서
intext: 페이지 본문 내 검색 intext:프록시 로테이션
allintitle: 제목에 모든 단어 포함 allintitle:웹 스크래핑 파이썬
URL에 포함된 모든 단어 URL에 포함된 모든 단어 allinurl:api 문서 스크래핑
관련: 유사 사이트 찾기 관련:brightdata.com
또는 두 용어 중 하나 일치 웹 스크래핑 또는 웹 크롤링
"정확한 구문" 정확한 일치 "serp api for python"
- 단어 제외 웹 스크래핑 -셀레니움
이전: / 이후: 날짜 범위 AI 개요 이후: 2025-01-01
AROUND(n) 근접 검색 스크래핑 AROUND(3) python
정의: 사전 정의 정의: 웹 스크래핑
* 와일드카드 "웹 스크래핑에 가장 적합한 *"

이 모든 것은 API 요청에서도 작동합니다. 예를 들어:

curl --proxy brd.superproxy.io:33335 
  --proxy-user brd-customer-<CUSTOMER_ID>-zone-<ZONE_NAME>:<PASSWORD> -k 
  "https://www.google.com/search?q=site:reddit.com+web+scraping+tools+2026&brd_json=1"

2026년 웹 스크래핑 도구에 대한 토론을 Reddit에서 구체적으로 검색하며, 구조화된 JSON 출력을 제공합니다.

Google search results for site:reddit.com web scraping tools 2026 showing only Reddit results
site:reddit.com 연산자는 모든 결과를 레딧으로 제한합니다. 연도 조건어와 결합하면 웹 스크래핑 도구에 관한 최근 커뮤니티 토론을 보여줍니다.

연산자는 결합할 수 있습니다: site:github.com filetype:pdf machine learning은 GitHub에 호스팅된 “machine learning”과 일치하는 PDF 파일만 반환합니다.

as_* – 고급 검색 매개변수

Google 고급 검색 양식은 as_ 접두사가 붙은 매개변수(as_q, as_epq, as_sitesearch, as_filetype 등)를 생성하며, 이는 위의 연산자와 매핑됩니다. 대부분의 엔지니어는 대신 q에 직접 연산자를 사용합니다. 이는 주로 검색 양식 UI를 구축하고 연산자 문자열을 연결하지 않고 양식 필드를 URL 매개변수에 매핑하려는 경우에 유용합니다.

2025-2026년에 알아야 할 변경 사항

구글은 2025-2026년에 기존 스크래핑 설정을 무효화하는 세 가지 변경 사항을 적용했습니다: 필수 JavaScript 렌더링(2025년 1월), num 매개변수 제거(2025년 9월), AI 개요 기능의 200개 이상 국가 확대 적용입니다.

Google은 이제 자바스크립트 렌더링을 요구합니다

2025년 1월부터 Google은 자바스크립트 렌더링 없이 검색 결과를 제공하지 않습니다. requests + BeautifulSoup 스크래퍼를 사용 중이었다면 이 변경 사항이 원인입니다. 모든 requests.get('https://google.com/search?q=...') 호출은 이제 빈 응답 또는 품질이 저하된 응답을 반환합니다. 완전한 브라우저 렌더링이나 이를 처리해주는 SERP API가 필요합니다.

SERP API는 자바스크립트 렌더링을 자동으로 수행하므로 API 호출 방식은 동일하게 유지됩니다.

num 매개변수는 더 이상 작동하지 않습니다

2025년 9월 12일부터 14일 사이에 Google은 조용히 num 매개변수를 비활성화했습니다. 이로 인한 영향은 광범위했습니다: 319개 사이트를 대상으로 한 연구에 따르면, 추적된 사이트의 87.7%가 Google Search Console에서 노출 수 감소를 경험했습니다.

10개 이상의 결과를 가져오려면 Bright Data의 SERP API에 Top 100 Results 엔드포인트가 있습니다. 이 엔드포인트는 단일 요청으로 1위부터 100위까지의 순위를 반환합니다. 별도의 API 인터페이스(/datasets/v3/trigger, 데이터셋 ID gd_mfz5x93lmsjjjylob)를 사용하며, 페이지네이션 깊이를 제어하기 위한 start_pageend_page 매개변수를 제공합니다:

curl -X POST "https://api.brightdata.com/datasets/v3/trigger?dataset_id=gd_mfz5x93lmsjjjylob&include_errors=true" 
  -H "Authorization: Bearer <API_TOKEN>" 
  -H "Content-Type: application/json" 
  -d '[{
    "url": "https://www.google.com/",
    "keyword": "웹 스크래핑 도구",
    "language": "en",
    "country": "US",
    "start_page": 1,
    "end_page": 10
  }]'

페이지 범위: 1..2 = 상위 20개, 1..5 = 상위 50개, 1..10 = 상위 100개 (페이지당 10개 결과). 응답에는 Google이 표시할 경우 AI 개요 텍스트( aio_text 필드)가 포함되며, "include_paginated_html": true를 추가하면 파싱된 데이터와 함께 원시 HTML을 캡처할 수 있습니다. 일괄 처리도 지원됩니다. 단일 요청으로 여러 키워드를 검색하려면 쿼리 객체 배열을 전달하세요.

검색 결과의 AI 개요

Google의 AI 개요(검색 결과 상단에 표시되는 AI 생성 요약)는 현재 200개 이상의 국가와 40개 이상의 언어로 제공됩니다. 2026년 1월, Google은 AI 개요를 Gemini 3로 업그레이드했습니다. 또한 AI 개요에서 AI 모드(udm=50) 대화로의 전환 기능을 추가했습니다. 이 콘텐츠를 캡처하려면 JavaScript 렌더링과 특정 추출 로직이 필요합니다. 실제 SERP의 AI 개요 예시:

Google AI Overview for "what makes the best pizza" showing AI-generated summary with source cards
일반적인 AI 개요: Google은 오른쪽에 강조된 핵심 문구와 출처 카드가 포함된 여러 단락으로 구성된 요약문을 생성합니다. 이 블록은 유기적 검색 결과를 화면 하단으로 밀어냅니다. SERP API를 통해 이를 캡처하려면 brd_ai_overview=2를 사용하세요.

AI 개요 스크레이퍼는 brd_ai_overview 매개변수를 통해 작동합니다. 결과에서 AI 생성 개요를 받을 확률을 높이려면 brd_ai_overview=2를 설정하세요:

curl --proxy brd.superproxy.io:33335 
  --proxy-user brd-customer-<CUSTOMER_ID>-zone-<ZONE_NAME>:<PASSWORD> -k 
  "https://www.google.com/search?q=what+makes+the+best+pizza&brd_ai_overview=2&brd_json=1"

테스트 결과(미국 지역 쿼리 기준), AI 개요 캡처를 활성화하면 응답 시간이 5~10초 증가합니다. 추가 지연 시간은 헤드리스 브라우저에서 Google의 동적으로 로드되는 AI 콘텐츠 렌더링이 완료될 때까지 기다리는 데서 발생합니다.

SERP API에서 Google 검색 매개변수 사용 방법

실제 규모의 스크래핑을 수행할 경우 CAPTCHA, IP 차단, 필수 JavaScript 렌더링, 파서 작동을 조용히 방해하는 Google 인프라 변경 사항에 직면하게 됩니다. 아래 모든 방법은 라이브 API를 대상으로 테스트하여 문서화된 대로 작동함을 확인했습니다.

Bright Data의 SERP API에서 이 매개변수를 사용하는 네 가지 방법(가장 간단한 것부터 고급까지 ). 탐색 단계라면 방법 1(직접 API)부터 시작하세요. 커스텀 헤더가 있는 기존 코드베이스에 통합할 경우 방법 2(프록시)를 선택하세요. AI 에이전트 워크플로에는 방법 4(LangChain)로 바로 넘어가세요. 시작 가이드는 설정을 단계별로 안내합니다.

방법 최적 용도 응답 복잡도
직접 API 시작하기, 단일 쿼리 동기식 낮음
프록시 라우팅 기존 HTTP 워크플로, 사용자 지정 요청 헤더 동기식 낮음
비동기 일괄 처리 대량(1,000개 이상의 쿼리), 페이지네이션 스윕 대기열 처리 중간
LangChain AI 에이전트, RAG 파이프라인, 다중 도구 워크플로 동기식 낮음

방법 1: 직접 API 요청

가장 간단한 방법입니다. 검색 URL을 포함한 POST 요청을 보내면 구조화된 데이터를 반환받습니다:

import requests
import json
from urllib.parse import urlencode

# 적절한 인코딩으로 Google 검색 URL 생성 (비라틴 문자, 특수 문자 처리)
params = urlencode({"q": "web scraping api", "gl": "us", "hl": "en", "brd_json": "1"})
search_url = f"https://www.google.com/search?{params}"

url = "https://api.brightdata.com/request"
headers = {
    "Content-Type": "application/json",
    "Authorization": "Bearer <API_TOKEN>"
}
payload = {
    "zone": "<ZONE_NAME>",
    "url": search_url,
    "format": "raw"
}

response = requests.post(url, headers=headers, json=payload, timeout=30)
response.raise_for_status()
data = response.json()

# 처리 전 응답 검증
if "organic" not in data or len(data.get("organic", [])) == 0:
    print("경고: 유기적 검색 결과 없음 (소프트 차단 또는 빈 SERP 가능성)")

print(json.dumps(data, indent=2))

기본 영역 이름은 일반적으로 "serp"입니다. 파싱된 응답은 다음과 같이 반환됩니다:

Bright Data SERP API JSON response for "best coffee shops" showing parsed organic results with title, link, rank, description, and global_rank fields
SERP API에서 파싱된 JSON 응답: 각 유기적 결과에는 title, link, description, rank, global_rank 필드가 포함됩니다. 응답은 또한 광고, 지식 패널, AI 개요를 명명된 섹션으로 분리합니다.

Direct API는 "format"과 별도로 "data_format" 본체 필드도 허용합니다: LLM/RAG(검색 강화 생성) 파이프라인용 "markdown", PNG 캡처용 "screenshot", 상위 10개 유기적 결과만 원하는 경우 "parsed_light". JSON 내부에 원시 HTML을 보존하려면 URL에 brd_json=html을 사용하세요.

본문의country는 URL의 gl과 다릅니다. "country": "us"프록시 출구 노드 (요청의 IP 위치)를 제어합니다. gl=us는 Google에 표시할 국가의 결과를 알려줍니다. 정확한 지역 타겟팅 결과를 위해 둘 다 설정하세요.

방법 2: 프록시 라우팅

Bright Data의 프록시 인프라를 통해 요청을 라우팅하세요. 프록시는 자체적으로 자바스크립트 렌더링을 처리하므로, 코드가 표준 HTTP 요청을 수행하더라도 완전히 렌더링된 결과를 반환받습니다. 이 방식은 모든 HTTP 클라이언트에서 작동하며, Direct API가 노출하지 않는 사용자 정의 헤더, 쿠키 및 요청 수준 옵션을 설정할 수 있습니다. 프록시 방식을 사용하면 URL 매개변수를 통해 출력 형식을 제어할 수 있습니다: 원시 HTML 대신 파싱된 JSON을 반환받으려면 brd_json=1을 추가하세요:

import requests

# 연결 풀링을 위한 세션 사용 (요청 간 TCP 연결 재사용)
session = requests.Session()
session.proxies = {
    "http": "http://brd-customer-<CUSTOMER_ID>-zone-<ZONE_NAME>:<PASSWORD>@brd.superproxy.io:33335",
    "https": "http://brd-customer-<CUSTOMER_ID>-zone-<ZONE_NAME>:<PASSWORD>@brd.superproxy.io:33335"
}
session.verify = False  # 테스트용; 실제 운영 환경에서는 Bright Data의 TLS/SSL 인증서를 로드

url = "https://www.google.com/search?q=serp+api+comparison&gl=us&hl=en&tbs=qdr:m&brd_json=1"

response = session.get(url, timeout=30)
response.raise_for_status()
print(response.json())

인증 정보는 대시보드의 SERP API 영역 ‘액세스 세부정보’ 탭에서 확인할 수 있습니다. 처리 전 항상 응답을 검증하세요. Google의 소프트 블록은 빈 결과 세트나 축소된 결과 세트를 포함한 유효한 JSON을 반환할 수 있습니다. general.results_cnt가 수백만 개의 예상 결과를 표시하지만 organic 배열이 비어 있거나 1~2개 항목만 포함된 경우, 이는 일반적으로 실제 빈 SERP가 아닌 소프트 블록을 의미합니다.

verify=False 플래그(또는 curl의 -k )는 TLS/SSL 검증을 건너뛰며, 테스트 시에는 괜찮습니다. 프로덕션 환경에서는 대신 Bright Data의 SSL 인증서를 로드하세요.

방법 3: 비동기 배치 처리

대량 작업(1,000개 이상 쿼리)의 경우 비동기 모드를 사용하세요. 비동기 모드는 start, gl, hl 매개변수를 사용하여 수백 개의 키워드 + 위치 조합을 페이지 단위로 처리할 때 유용합니다(예: 10개국에서 500개 키워드 추적). 요금은 요청 전송 시에만 부과되며 응답 수집은 무료입니다. 콜백 시간은 작업량과 피크 부하에 따라 달라집니다.

먼저, 해당 지역의 고급 설정에서 ‘비동기 요청’ 토글을 활성화하세요. 그런 다음 /unblocker/req 엔드포인트를 사용하세요:

import requests
import json
import time

url = "https://api.brightdata.com/unblocker/req"
params = {"customer": "<CUSTOMER_ID>", "zone": "<ZONE_NAME>"}
headers = {
    "Content-Type": "application/json",
    "Authorization": "Bearer <API_TOKEN>"
}
payload = {
    "url": "https://www.google.com/search?q=web+scraping+tools&gl=us&hl=en&brd_json=1",
    "country": "us"
}

response = requests.post(url, params=params, headers=headers, json=payload, timeout=30)
response.raise_for_status()
response_id = response.headers.get("x-response-id")
print(f"대기 중. 응답 ID: {response_id}")

# 결과 확인 (실제 운영 환경에서는 대신 영역 설정에서 웹훅 URL을 구성하세요)
# 총 확인 시간: 30회 시도 × 10초 = 300초. 대량 배치 시 range() 범위 확장 필요.
for attempt in range(30):
    time.sleep(10)  # 확인 전 대기 - 결과가 즉시 준비되지 않음
    result = requests.get(
        "https://api.brightdata.com/unblocker/get_result",
        params={"customer": "<CUSTOMER_ID>", "zone": "<ZONE_NAME>", "response_id": response_id},
        headers={"Authorization": "Bearer <API_TOKEN>"},
        timeout=30
    )
    if result.status_code == 200:
        data = result.json()
        if "organic" in data and len(data["organic"]) > 0:
            print(json.dumps(data, indent=2))
        else:
            print("경고: 응답이 반환되었으나 유기적 결과가 포함되어 있지 않습니다")
        break
    elif result.status_code == 202:
        continue  # 결과가 아직 준비되지 않음
else:
    print(f"response_id={response_id} 대기 중 300초 초과")

폴링 대신 웹훅 URL을 설정할 수 있습니다(존 설정에서 기본값으로 지정하거나 요청마다 webhook_url 매개변수를 사용). Bright Data는 결과가 준비되면 엔드포인트로 알림을 전송합니다( response_id 및 상태 포함). 따라서 /get_result 엔드포인트를 수동으로 폴링할 필요가 없습니다. 응답은 최대 48시간 동안 저장됩니다.

관리형 API를 사용하더라도 존의 속도 제한을 준수하십시오. 기본 구성은 높은 처리량을 처리하지만, 페이싱 없이 수천 개의 동시 동기화 요청을 한꺼번에 보내면 HTTP 429 응답이 발생할 수 있습니다. 비동기 모드는 API가 내부적으로 요청을 대기열에 넣고 페이싱하므로 이를 방지합니다.

방법 4: AI 워크플로우를 위한 LangChain 통합

실시간 검색 데이터가 필요한 AI 에이전트를 구축 중이라면, 공식 LangChain 통합(langchain-brightdata)을 활용하여 에이전트 워크플로우에서 실시간 검색을 도구로 사용할 수 있습니다:

pip install langchain-brightdata
from langchain_brightdata import BrightDataSERP

serp_tool = BrightDataSERP(
    bright_data_api_key="<API_TOKEN>",
    zone="<ZONE_NAME>",  # Bright Data 대시보드의 지역명과 반드시 일치해야 함
    search_engine="google",
    country="us",
    language="en",
    results_count=10,
    parse_results=True)


# 이 특정 요청에 대해 생성자 기본값 재정의:
results = serp_tool.invoke({
    "query": "best web scraping tools 2026",
    "country": "de",
    "language": "de",
    "search_type": "shop",
    "device_type": "mobile",
})

이 통합에서 주의할 점:

  • results_count는 내부적으로 Google의 num에 매핑됩니다. num이 더 이상 작동하지 않으므로(num 섹션 참조), 10을 초과하는 값은 효과가 없습니다.
  • country와 language는 gl (국가 결과)과 hl (언어)로 매핑됩니다. "country" 가 프록시 출구 노드를 제어하는 Direct API와 달리, LangChain은 프록시 라우팅을 자동으로 처리합니다.
  • zone은 기본값이 "serp"입니다. 존 이름이 다른 경우(예: "serp_api1"), 명시적으로 설정하지 않으면 “존을 찾을 수 없음” 오류가 발생합니다.

LangChain 외에도 CrewAI, AWS Bedrock, Google Vertex AI 통합 가이드를 참조하십시오. 검색 데이터 수집이 아닌 경우 Bright Data의 AI 웹 액세스 도구를 참조하십시오.

전체 매개변수 목록: SERP API 문서

관리형 SERP API를 사용해야 하는 이유

SERP API는 JavaScript 렌더링, 프록시 로테이션, CAPTCHA 해결, 지역 타겟팅을 처리합니다:

Architecture diagram showing the SERP API flow: Your Code sends an API request to Bright Data SERP API (which handles JS rendering, proxy rotation, CAPTCHA solving, and geo-targeting), which queries Google and returns parsed JSON

Playwright, Selenium 또는 Bright Data의 자체 브라우저 API로 직접 구축할 수도 있습니다. 하지만 Google 스크레이퍼를 유지 관리하려면 CAPTCHA 처리, IP 차단, 주거용 프록시, JavaScript 렌더링, Google이 마크업을 업데이트할 때마다 깨지는 HTML 파싱을 처리해야 합니다. 두 접근 방식의 비교는 관리형 대 API 기반 스크레이핑을 참조하세요 .

SERP API를 사용하면 검색 URL을 전송하고 구조화된 JSON을 반환받습니다. Google, Bing, DuckDuckGo, Yandex 등 다양한 검색 엔진에서 작동합니다. 현재 요금은 가격 페이지에서 확인하세요.

SERP API 플레이그라운드에서는 코드 없이 기본 검색을 실행할 수 있으며, Postman 워크스페이스에는 미리 구축된 요청이 있습니다. 플레이그라운드 링크:

Bright Data SERP API Playground showing a search for "web scraping tools" on Google.com with structured JSON results
플레이그라운드 UI: 검색 엔진, 국가, 언어를 선택하고 쿼리를 입력하면 오른쪽에 파싱된 JSON 응답을 확인할 수 있습니다.

위 예제를 실행하려면계정을 생성하세요 (신규 계정은 테스트용 무료 크레딧 제공).

실제 사용 사례

이러한 매개변수 조합은 실제 스크래핑 작업 흐름에서 반복적으로 나타납니다.

SEO 순위 추적

q, gl, hl, pws=0, udm=14, start를 조합하여 지역별 키워드 순위를 추적하세요:

# 미국, 영국, 독일에서 "웹 스크래핑 도구" 순위 확인
curl --proxy brd.superproxy.io:33335 
  --proxy-user brd-customer-<CUSTOMER_ID>-zone-<ZONE_NAME>:<PASSWORD> -k 
  "https://www.google.com/search?q=web+scraping+tools&gl=us&hl=en&pws=0&udm=14&brd_json=1"
# gl=gb 및 gl=de로 반복 실행
# start=10, start=20을 사용해 1페이지 이후 순위 확인

v0 및 SERP API를 사용한 SEO 순위 추적기 구축 방법에 대한 전체 안내를 참조하세요.

경쟁사 광고 모니터링

경쟁사의 광고 게재 위치는 매일 변경됩니다. tbs=qdr: d와 브랜드 키워드를 결합하여 최근 변경 사항을 확인하세요:

https://www.google.com/search?q=competitor+brand+name&gl=us&hl=en&tbs=qdr:d&brd_json=1

JSON 응답은 상위 광고(top_ads), 하단 광고(bottom_ads), 인기 상품 ( popular_products, 제품 리스팅 광고)을 유기적 검색 결과와 분리하여 표시합니다.

가격 비교 및 이커머스 인텔리전스

시장 간 가격 비교를 위해 tbm=shop을 유지한 상태에서 gl 값을 변경하세요:

https://www.google.com/search?q=sony+wh-1000xm5&tbm=shop&gl=us&brd_json=1
https://www.google.com/search?q=sony+wh-1000xm5&tbm=shop&gl=gb&brd_json=1
https://www.google.com/search?q=sony+wh-1000xm5&tbm=shop&gl=de&brd_json=1

뉴스 모니터링 및 감성 분석

https://www.google.com/search?q=openai&tbm=nws&tbs=qdr:h&filter=0&brd_json=1. 뉴스는 tbm=nws, 지난 1시간은 tbs=qdr:h, 유사 기사 클러스터링 방지에는 filter=0을 사용하세요. 시간별 커버리지 모니터링을 위해 크론 작업으로 실행하세요.

AI 기반 검색 및 RAG 애플리케이션

SERP API를 검색 레이어로 활용하여 실시간 검색 데이터 기반의 대규모 언어 모델(LLM) 애플리케이션을 구축하세요. LangChain 통합(위 방법 4), MCP 서버, 직접 API 호출 모두 가능합니다. 작동 예시는 SERP API를 활용한 RAG 챗봇 구축 방법을 참조하세요.

지역 SEO 및 다중 위치 모니터링

지역별 순위는 도시마다 크게 다를 수 있습니다. glpws=0 옵션을 사용해 uule로 비교하세요:

# 3개 도시에서 "plumber near me" 순위 확인
curl --proxy brd.superproxy.io:33335 
  --proxy-user brd-customer-<CUSTOMER_ID>-zone-<ZONE_NAME>:<PASSWORD> -k 
  "https://www.google.com/search?q=plumber+near+me&uule=Chicago,Illinois,United+States&gl=us&pws=0&brd_json=1"
# uule=Miami,Florida,United+States 및 uule=Seattle,Washington,United+States로 반복 실행

각 지역별 스낵 팩 (지역 3개 팩) 및 유기적 검색 결과를 비교하여 개선이 필요한 목록을 확인하세요.

학술 및 시장 조사

https://www.google.com/search?q=site:arxiv.org+large+language+models&lr=lang_en&tbs=cdr:1,cd_min:01/01/2025,cd_max:12/31/2025&brd_json=1

site:lr 및 날짜 범위 tbs 필터를 결합하여 집중적인 연구 데이터 세트를 구축하세요. arxiv.org를 scholar.google.com, pubmed.ncbi.nlm.nih.gov 또는 다른 도메인으로 대체하세요.

결론

위 내용 중 실제로 중요한 점:

  • 시장 간 일관되고 비개인화된 순위 추적을 위해 gl + hl + pws=0 + udm=14 사용
  • num은 더 이상 사용되지 않습니다. 페이지네이션에는 start를 사용하거나 대량 결과를 위해 Bright Data의 Top 100 엔드포인트를 활용하세요
  • udm=14는 AI 개요를 제거하고 기존 유기적 검색 결과를 반환합니다. udm은 tbm에 추가 모드를 확장합니다
  • tbs는 시간 필터링, 날짜 정렬(sbd:1), 문자 그대로 검색(li:1)을 처리합니다
  • 특수 문자는 URL 인코딩이 필요합니다. ibp=htl%3Bjobs의 세미콜론은 비라틴 문자 쿼리와 함께 가장 흔한 인코딩 오류입니다

Google은 이러한 매개변수를 계속 변경합니다. 사전 경고 없이 num을 제거했으며, start도 동일하게 변경하거나 tbm을 udm으로 대체할 수 있습니다. 상당한 규모의 스크래핑을 수행하는 경우, Bright Data의 SERP API가 렌더링, 로테이션 및 파싱을 처리합니다. 위 예제와 함께 사용해 보세요.

다음 단계

사용 사례에 따른 추천 자료:

지금 바로 Google 스크래핑을 시작하려면:

AI 애플리케이션을 구축 중이라면:

SERP API 공급업체를 평가 중이라면:

기타 Google 데이터 소스:

외부 참조:

참고 자료:

자주 묻는 질문

Google 검색 매개변수란 무엇인가요?

Google 검색 매개변수는 https://www.google.com/search? URL에 추가되는 키-값 쌍으로, 검색 결과가 생성되고 표시되는 방식을 제어합니다. 예를 들어, q=pizza는 검색 쿼리를 설정하고, gl=us는 미국을 대상으로 하며, hl=en은 인터페이스 언어를 영어로 설정합니다. 이들은 &로 구분되며 URL의 ? 뒤에 위치합니다.

gl 매개변수는 지리적 위치 (검색이 발생한 것으로 보이는 국가)를 제어하여 표시되는 결과를 변경합니다. hl 매개변수는 호스트 언어 (Google 인터페이스의 언어)를 제어합니다. 예를 들어, gl=de&hl=en은 독일과 관련된 결과를 제공하지만 인터페이스는 영어로 표시됩니다.

Google num 매개변수는 더 이상 사용되지 않나요?

단순히 사용 중단된 것이 아닙니다. 아예 작동하지 않습니다. Google은 2025년 9월 12일부터 14일 사이에 이 매개변수를 조용히 비활성화했습니다. num=100을 전달해도 아무 효과가 없으며, Google은 어떤 경우에도 10개의 결과만 반환합니다. 페이지 매김을 위해 start를 사용하거나 Bright Data의 Web Scraper API Top 100 엔드포인트를 사용하여 단일 요청으로 1~100위 결과를 가져오세요.

Google udm 매개변수는 무엇인가요?

udm은 User Display Mode(사용자 표시 모드)를 의미할 가능성이 높습니다(커뮤니티의 리버스 엔지니어링에 기반; Google은 약어를 확인하지 않았습니다). 주로 udm=14를 사용하게 되며, 이는 AI 개요를 제거하고 클래식 유기적 검색 결과를 반환합니다. 다른 값으로는 udm=2 (이미지), udm=39 (짧은 동영상), udm=50 (AI 모드) 등이 있습니다. udm은 tbm에 추가 모드를 확장하며, 둘 다 여전히 작동합니다. 모든 값은 udm 섹션에 나열되어 있습니다.

tbm과 udm의 차이점은 무엇인가요?

tbm은 기존 매개변수이고, udm은 새로운 확장 기능입니다. 이미지, 뉴스, 쇼핑 결과에서는 중복됩니다(tbm=ischudm=2). 하지만 udm은 tbm이 지원하지 않는 기능도 포함합니다: AI 모드(udm=50), 포럼(udm=18), 짧은 동영상(udm=39). 현재 둘 다 작동합니다. udm을 기준으로 새 코드를 구축하고, tbm은 대체 수단으로 유지하십시오.

num이 더 이상 사용되지 않는 지금, Google 결과를 어떻게 페이지 나누나요?

start 매개변수를 사용하세요. start=0 (또는 생략)은 1~10번째 결과를, start=10은 11~20번째 결과를 반환합니다. 각 페이지는 10개의 결과를 제공합니다. 단일 요청으로 1~100번째 결과를 얻으려면 Bright Data의 Top 100 엔드포인트를 start_pageend_page 매개변수와 함께 사용하세요.

Google 결과를 날짜별로 필터링하려면 어떻게 해야 합니까?

tbs 매개변수를 사용하세요. tbs=qdr:h = 지난 1시간, tbs=qdr:d = 지난 1일, tbs=qdr:w = 지난 1주, tbs=qdr:m = 지난 1개월, tbs=qdr:y = 지난 1년. 사용자 지정 날짜 범위의 경우: tbs=cdr:1,cd_min:MM/DD/YYYY,cd_max:MM/DD/YYYY. 관련도 대신 날짜별로 정렬하려면 tbs=sbd:1을 추가하세요.

차단되지 않고 Google 검색 결과를 스크래핑하는 방법은 무엇입니까?

대규모 구글 스크래퍼를 유지하려면 2025년 1월 이후로 구글이 마크업을 변경할 때마다 HTML 파서를 업데이트하고, CAPTCHA를 해결하며, IP를 회전시키고, 모든 요청에 대해 자바스크립트를 렌더링해야 합니다. 관리형 SERP API가 이 인프라를 처리합니다. URL을 보내면 구조화된 JSON을 받아오며, 파서를 유지 관리할 필요가 없습니다.