Serper는 Google 검색 결과를 API를 통해 제공하는 서비스로, 웹 스크래핑 없이 구조화된 검색 데이터를 얻을 수 있게 해줍니다. 특히 캡차 우회나 IP 차단 걱정 없이 안정적으로 Google 검색 결과를 가져올 수 있다는 장점이 있습니다.
Serper API를 사용하는 방법은 크게 다음 단계로 나눌 수 있습니다.
1. Serper 계정 생성 및 API 키 발급
Serper 웹사이트 접속: 먼저
공식 웹사이트에 접속합니다.https://serper.dev/ 회원 가입: 이름, 이메일 주소, 비밀번호를 입력하여 계정을 생성합니다. 보통 가입 시 일정량의 무료 크레딧이 제공됩니다 (예: 3000건).
이메일 인증: 가입 후 입력한 이메일 주소로 발송된 인증 링크를 클릭하여 계정을 활성화합니다.
API Key 확인: 로그인 후 대시보드(Dashboard)의 왼쪽 메뉴에서 **"API Key"**를 선택합니다. 이곳에서 고유한 API 키를 확인하고 복사할 수 있습니다. 이 키는 API 요청 시 인증에 사용되므로 외부에 노출되지 않도록 주의해야 합니다.
2. API 요청 (Request) 보내기
Serper API는 주로 HTTP POST 요청을 사용하여 JSON 형식으로 검색 쿼리를 보내고, JSON 형식으로 응답을 받습니다.
기본 요청 URL:
https://api.serper.dev/search
요청 헤더 (Headers):
API 키를 포함해야 합니다.
'X-API-KEY': 'YOUR_API_KEY'
'Content-Type': 'application/json'
요청 본문 (Body - JSON 형식):
q (query) 파라미터는 필수이며, 검색할 키워드를 입력합니다.
다양한 추가 파라미터를 사용하여 검색을 세분화할 수 있습니다.
주요 요청 파라미터:
q
: 검색어 (필수)gl
: 국가 코드 (예:us
,kr
)hl
: 언어 코드 (예:en
,ko
)num
: 검색 결과 수 (기본값: 10, 최대 100)page
: 검색 결과 페이지 번호 (기본값: 1)type
: 검색 유형 (예:search
(기본),images
,news
,videos
,shopping
,places
,scholar
)location
: 특정 지역에서 검색 (예:Seoul, South Korea
)device
: 기기 유형 (예:desktop
,mobile
,tablet
)tbs
: 시간 범위 제한 (예:qdr:h
(지난 1시간),qdr:d
(지난 24시간),qdr:w
(지난 주),qdr:m
(지난 달),qdr:y
(지난 1년))autocorrect
: 자동 교정 여부 (true
또는false
)
Python을 사용한 요청 예시 (requests 라이브러리 활용):
import requests
import json
# 여기에 발급받은 API 키를 입력하세요
SERPER_API_KEY = 'YOUR_SERPER_API_KEY'
# 검색어
query = "Serper API 사용 방법"
# 요청 URL
url = "https://api.serper.dev/search"
# 요청 헤더
headers = {
'X-API-KEY': SERPER_API_KEY,
'Content-Type': 'application/json'
}
# 요청 본문 (JSON)
# 필요한 파라미터를 추가할 수 있습니다.
payload = json.dumps({
"q": query,
"gl": "kr", # 한국
"hl": "ko", # 한국어
"num": 10 # 10개 결과 요청
})
try:
response = requests.post(url, headers=headers, data=payload)
response.raise_for_status() # HTTP 오류가 발생하면 예외 발생
search_results = response.json()
# 검색 결과 출력
print("검색어:", query)
print("\n[오가닉 검색 결과]")
if 'organic' in search_results:
for i, result in enumerate(search_results['organic']):
print(f"{i+1}. 제목: {result.get('title')}")
print(f" 링크: {result.get('link')}")
print(f" 내용: {result.get('snippet')}\n")
else:
print("오가닉 검색 결과가 없습니다.")
# 추가적인 섹션 (예: People Also Ask, Related Searches)
if 'peopleAlsoAsk' in search_results:
print("\n[관련 질문 (People Also Ask)]")
for item in search_results['peopleAlsoAsk']:
print(f"- {item.get('title')}")
if 'relatedSearches' in search_results:
print("\n[관련 검색어 (Related Searches)]")
for item in search_results['relatedSearches']:
print(f"- {item.get('query')}")
except requests.exceptions.RequestException as e:
print(f"API 요청 중 오류 발생: {e}")
if response:
print(f"응답 상태 코드: {response.status_code}")
print(f"응답 내용: {response.text}")
3. 응답 (Response) 분석
Serper API는 요청에 대한 응답을 JSON 형식으로 반환합니다. 이 JSON 객체는 다양한 섹션으로 구성될 수 있으며, 요청한 검색 유형과 결과에 따라 달라집니다.
주요 응답 섹션:
searchParameters
: 요청에 사용된 파라미터 정보를 포함합니다.organic
: Google의 자연 검색 결과 목록입니다. 각 항목에는title
(제목),link
(URL),snippet
(요약),sitelinks
등이 포함될 수 있습니다.ads
: 유료 광고 결과 목록입니다.answerBox
: 직접 답변(Featured Snippet) 정보입니다.peopleAlsoAsk
: "사람들이 자주 묻는 질문" 섹션입니다.knowledgeGraph
: 지식 그래프 패널 정보입니다.images
: 이미지 검색 결과 (type='images' 요청 시 주로 사용).news
: 뉴스 검색 결과 (type='news' 요청 시 주로 사용).shopping
: 쇼핑 검색 결과 (type='shopping' 요청 시 주로 사용).videos
: 비디오 검색 결과 (type='videos' 요청 시 주로 사용).relatedSearches
: 관련 검색어 목록입니다.
응답 예시 (간략):
{
"searchParameters": {
"q": "Serper API 사용 방법",
"gl": "kr",
"hl": "ko",
"type": "search"
},
"organic": [
{
"title": "Serper API 공식 문서",
"link": "https://serper.dev/docs",
"snippet": "Serper API의 공식 문서를 통해 다양한 기능과 사용법을 익힐 수 있습니다."
},
{
"title": "Python으로 Serper API 사용하기",
"link": "https://example.com/blog/serper-api-python",
"snippet": "Python requests 라이브러리를 사용하여 Serper API를 호출하는 예제입니다."
}
// ... 더 많은 오가닉 결과
],
"peopleAlsoAsk": [
{
"title": "Serper API 무료인가요?",
"snippet": "Serper는 가입 시 무료 크레딧을 제공하며, 이후에는 사용량에 따라 과금됩니다.",
"link": "..."
}
],
"relatedSearches": [
{
"query": "Serper API 가격"
},
{
"query": "Serper API 대체"
}
]
}
Serper API는 구글 검색 결과를 자동으로 파싱하여 JSON 형태로 제공하므로, 개발자는 복잡한 웹 스크래핑 로직 없이 필요한 정보를 쉽게 활용할 수 있습니다. 자세한 내용은 Serper 공식 문서(
0 댓글