Google 검색 애널리틱스 데이터 쿼리

Google 검색 데이터에 대한 쿼리를 실행하여 Google 검색결과에 속성이 표시되는 빈도, 데스크톱 또는 스마트폰에서 검색한 검색어 등을 확인할 수 있습니다. 이 결과를 사용하여 속성의 검색 실적을 개선할 수 있습니다. 예를 들면 다음과 같습니다.

  • 시간 경과에 따른 검색 트래픽 변화, 검색 트래픽의 출처, 내 속성이 표시될 가능성이 가장 높은 검색어를 확인할 수 있습니다.
  • 스마트폰에서 생성되는 검색어를 파악하고, 이 정보를 활용하여 모바일 타겟팅을 개선합니다.
  • Google 검색결과에서 최고(및 최저) 클릭률을 보이는 페이지를 확인합니다.

검색어 데이터는 searchanalytics.query() 메서드를 통해 노출됩니다. query() 메서드는 Search Console의 실적 보고서에서 제공되는 모든 데이터를 노출합니다. 쿼리를 실행하기 전에 Google 검색 애널리틱스 보고서 문서를 읽고 노출되는 데이터와 그 의미를 확인하세요.

이 페이지에서는 다양한 요청 매개변수를 사용하여 일반적인 쿼리를 수행하는 방법을 설명합니다.

시작하기

데이터 존재 확인

쿼리를 실행하기 전에 먼저 해당 기간에 데이터가 있는지 테스트해야 합니다. 필터, 정렬, 행 한도, 시작일, 종료일, '날짜'를 제외한 기타 매개변수는 유일한 측정기준으로 생략합니다.

코드

request = {
      'startDate': flags.start_date,
      'endDate': flags.end_date,
      'dimensions': ['date']
  }

출력

python search_analytics_api_sample.py 'https://www.example.com/' '2015-05-01' '2015-05-15'
Available dates:
Keys                              Clicks         Impressions                 CTR            Position
2015-05-01                       22823.0            373911.0     0.0610385893969        8.1829472789
2015-05-02                       16075.0            299718.0     0.0536337490574       8.14173322924
2015-05-03                       18794.0            337759.0      0.055643224903       8.07772405769
2015-05-04                       31894.0            468076.0     0.0681385074219        7.4104611217
2015-05-05                       34392.0            482919.0      0.071216912153       7.20689805123
2015-05-06                       35650.0            484353.0     0.0736033430164       7.11683214515
2015-05-07                       33994.0            465812.0     0.0729779395979       6.91755472165
2015-05-08                       27328.0            413007.0     0.0661683700276       7.22172747677
2015-05-09                       16637.0            297302.0     0.0559599329974       8.01876206685
2015-05-10                       19167.0            332607.0     0.0576265682923       7.87882696395
2015-05-11                       35358.0            499888.0      0.070731843933       7.11701821208
2015-05-12                       35952.0            486583.0      0.073886675038       6.80677294521
2015-05-13                       34417.0            480777.0      0.071586203167       6.86552185317
2015-05-14                       32029.0            457187.0     0.0700566726525       6.92575904389
2015-05-15                       27071.0            415973.0     0.0650787430915       7.27105605412

다른 날짜 시도

해당 기간에 대한 데이터가 있으므로 계속 진행하는 것이 안전합니다. 실제 쿼리를 실행하기 전에 이 작업을 수행하는 것이 중요합니다. 예를 들어 동일한 쿼리를 다른 범위에 대해 실행하면 다음과 같은 결과가 반환됩니다.

python search_analytics_api_sample.py 'https://www.example.com/' '2015-06-01' '2015-06-15'
Available dates:
Keys                              Clicks         Impressions                 CTR            Position
2015-06-01                       31897.0            468486.0     0.0680852789624       6.81207122518
2015-06-02                       32975.0            460266.0     0.0716433540605       6.62655942433
2015-06-03                       32779.0            459599.0     0.0713208688444       6.58126758326
2015-06-04                       30116.0            435308.0     0.0691831990223       6.71409668557
2015-06-05                       25188.0            380444.0     0.0662068530454       7.00998570092
2015-06-06                       14829.0            272324.0     0.0544535186028        7.6309910254
2015-06-07                       17896.0            318094.0      0.056260099216       7.56606223318
2015-06-08                       33377.0            487274.0     0.0684973957158       6.77552260125
2015-06-09                       33885.0            484241.0     0.0699754874123       6.70545451542
2015-06-10                       32622.0            466250.0     0.0699667560322       6.64417372654
2015-06-11                       31317.0            447306.0     0.0700124746818       6.61534832978
2015-06-12                       25932.0            393791.0      0.065852190629       7.15718998149
2015-06-13                       15451.0            275493.0     0.0560849095984       7.69994518917
2015-06-14                       18358.0            318193.0     0.0576945438775       7.34048517724

자세히 살펴보면 데이터가 14일에 종료되고 15일에 대한 데이터가 없음을 알 수 있습니다.

자유 형식 수정 모드에서 API 탐색기를 사용하여 쿼리를 신속하게 테스트하는 것이 유용할 수 있습니다 (요청 본문 필드 옆에 있는 드롭다운 화살표를 클릭하고 '자유 형식 편집기' 클릭).

유효한 날짜 범위를 확인한 후에는 다른 측정기준별 그룹화, 필터 추가, 행 수 제한 등을 시작할 수 있습니다.

상위 10개 쿼리(클릭수를 기준으로 정렬됨, 내림차순으로 정렬됨)

코드

request = {
    'startDate': flags.start_date,
    'endDate': flags.end_date,
    'dimensions': ['query'],
    'rowLimit': 10
}

출력

Top Queries:
Keys                              Clicks         Impressions                 CTR            Position
seo                               3523.0            270741.0     0.0130124362398       5.86615252215
hreflang                          3207.0              5496.0      0.583515283843       1.10080058224
robots.txt                        2650.0             23005.0      0.115192349489       4.30367311454
301 redirect                      2637.0              7814.0      0.337471205529         1.621192731
googlebot                         2572.0              6421.0      0.400560660333       1.15823080517
google seo                        2260.0             11205.0      0.201695671575       1.38295403838
google sitemap                    1883.0              4288.0      0.439132462687       1.21175373134
canonical url                     1882.0              3714.0      0.506731287022       1.12762520194
sitemap                           1453.0             22982.0       0.06322339222       3.78074144983

상위 10개 페이지, 클릭수 기준, 내림차순으로 정렬됨

코드

request = {
    'startDate': flags.start_date,
    'endDate': flags.end_date,
    'dimensions': ['page'],
    'rowLimit': 10
}

출력

Top Pages:
Keys                              Clicks         Impressions                 CTR            Position
https://www.example.com/21       10538.0             62639.0      0.168233847922       3.63031019014
https://www.example.com/65        9740.0             82375.0      0.118239757208       5.61003945372
https://www.example.com/15        9220.0            128101.0     0.0719744576545       5.32300294299
https://www.example.com/41        8859.0            426633.0     0.0207649197319       1.62309057199
https://www.example.com/53        8791.0            829679.0     0.0105956641062       14.4941887164
https://www.example.com/46        7390.0             82303.0     0.0897901656076        5.7723290767
https://www.example.com/27        7169.0             64013.0      0.111992876447       4.98709637105
https://www.example.com/80        6047.0             84233.0     0.0717889663196       4.10592048247
https://www.example.com/9         5886.0             59704.0     0.0985863593729        4.0897594801
https://www.example.com/8         5043.0             66869.0     0.0754161120998       4.57651527614

인도의 상위 10개 검색어(클릭수 기준 내림차순으로 정렬됨)

필터 연산자 '같음'은 기본 연산자이므로 생략됩니다.

코드

request = {
    'startDate': flags.start_date,
    'endDate': flags.end_date,
    'dimensions': ['query'],
    'dimensionFilterGroups': [{
         'filters': [{
              'dimension': 'country',
              'expression': 'ind'
          }]
      }],
      'rowLimit': 10
  }

출력

Top queries in India:
Keys                              Clicks         Impressions                 CTR            Position
googlebot                          250.0               429.0      0.582750582751                 1.0
search console                     238.0             34421.0    0.00691438366114       1.00101682113
dns error                          189.0               850.0      0.222352941176       1.38470588235
google seo                         165.0               552.0      0.298913043478       1.04166666667
canonical url                      141.0               282.0                 0.5                 1.0
301 redirect                       132.0               557.0      0.236983842011       1.78276481149
google search console              126.0             16898.0    0.00745650372825       1.03929459108
robots.txt                         117.0              1046.0      0.111854684512        3.9206500956
canonical tag                      111.0               223.0      0.497757847534                 1.0

인도의 상위 10개 모바일 검색어(클릭수 기준 내림차순으로 정렬됨)

코드

request = {
    'startDate': flags.start_date,
    'endDate': flags.end_date,
    'dimensions': ['query'],
    'dimensionFilterGroups': [{
        'filters': [{
            'dimension': 'country',
            'expression': 'ind'
          }, {
            'dimension': 'device',
            'expression': 'MOBILE'
       }]
    }],
    'rowLimit': 10
}

출력

Top mobile queries in India:
Keys                              Clicks         Impressions                 CTR            Position
search console                      26.0              1004.0     0.0258964143426       1.00298804781
dns error                           24.0               111.0      0.216216216216       1.27927927928
google seo                          18.0                69.0      0.260869565217       1.02898550725
eliminar                            16.0               134.0      0.119402985075                 1.0
googlebot                           11.0                24.0      0.458333333333                 1.0
404                                  9.0               214.0     0.0420560747664       8.64018691589
robots.txt                           9.0                40.0               0.225               4.025
google search console                8.0               438.0     0.0182648401826       1.04337899543
seo                                  8.0               111.0     0.0720720720721       4.96396396396

행 슬라이스 쿼리

시작 행 번호 (0부터 시작)와 반환할 행 수를 지정하여 특정 행 슬라이스를 쿼리할 수 있습니다. 잘못된 시작 행 번호를 지정하면 오류가 반환되지만 사용할 수 있는 행보다 많은 행을 지정하면 사용 가능한 모든 행이 반환됩니다.

해당 기간의 상위 11~20개 모바일 검색어(클릭수를 기준으로 정렬됨, 내림차순으로 정렬됨)

코드

request = {
      'startDate': flags.start_date,
      'endDate': flags.end_date,
      'dimensions': ['query'],
      'dimensionFilterGroups': [{
          'filters': [{
              'dimension': 'device',
              'expression': 'mobile'
          }]
      }],
      'rowLimit': 10,
      'startRow': 10
  }

출력

Top 11-20 Mobile Queries:
Keys                              Clicks         Impressions                 CTR            Position
dns error                         1220.0             15064.0        0.0809877854       3.13448726206
google seo                        1161.0              7923.0         0.146535403       2.31479556195
sitemap                            926.0             12478.0        0.0742106107        5.8130025067
googlebot                          903.0              7822.0         0.115443621        4.6910285792
robots.txt                         799.0             24868.0        0.0321296445       5.92759215963
404                                520.0             12777.0        0.0406981295       5.80352636506
seo                                506.0              2925.0         0.172991453       2.50413960996
search console                     487.0               981.0         0.496432212       1.00036102455
canonical url                      326.0              4087.0        0.0797651089       3.23664971157
301 redirect                       261.0              3165.0         0.082464455       3.63074363869

25,000개를 초과하는 행 가져오기

쿼리에 25,000개가 넘는 데이터 행이 있는 경우 여러 쿼리를 보내고 매번 startRow 값을 증가시켜 한 번에 25,000개의 행 배치로 데이터를 요청할 수 있습니다. 검색된 행의 수를 셉니다. 요청된 행 수보다 적으면 모든 데이터를 가져온 것입니다. 요청이 데이터 경계에서 정확히 끝나는 경우 (예: 행이 25,000개이고 startRow=0 및 rowLimit=25000을 요청한 경우) 다음 호출 시 빈 응답을 받게 됩니다.

해당 기간의 상위 1~25,000개의 모바일 검색어(클릭수를 기준으로 정렬됨, 내림차순으로 정렬됨)

코드

request = {
      'startDate': flags.start_date,
      'endDate': flags.end_date,
      'dimensions': ['query'],
      'dimensionFilterGroups': [{
          'filters': [{
              'dimension': 'device',
              'expression': 'mobile'
          }]
      }],
      'rowLimit': 25000,
      'startRow': 0
  }

해당 기간의 상위 25,001~50,000개의 모바일 검색어(클릭수를 기준으로 정렬됨, 내림차순으로 정렬됨)

코드

request = {
      'startDate': flags.start_date,
      'endDate': flags.end_date,
      'dimensions': ['query'],
      'dimensionFilterGroups': [{
          'filters': [{
              'dimension': 'device',
              'expression': 'mobile'
          }]
      }],
      'rowLimit': 25000,
      'startRow': 25000
  }

모든 데이터 가져오기

모든 검색 트래픽 쿼리를 참고하세요.