🍜 맛집 순위 공개 API

지프리 맛집지도의 맛집 순위(찜 횟수)와 평점 순위를 JSON으로 제공합니다. 다른 사이트·앱·블로그에서 자유롭게 가져다 쓰세요. 무료·CORS 허용·로그인 불필요입니다.

출처만 표기해 주세요 → 데이터 제공: 지프리(gfreee.com). 상업적 이용 시 맛집지도로의 링크를 함께 걸어주시면 감사하겠습니다.

엔드포인트

설명메서드 · 경로
🔥 맛집 순위 — 이용자가 많이 찜한 순GET https://gfreee.com/food/open/favranking
⭐ 평점 순위 — 평점(10점) 높은 순GET https://gfreee.com/food/open/ranking

요청 파라미터

이름필수설명
cat선택음식 카테고리 코드(아래 표). 생략 시 전체.
page선택페이지 번호(1부터, 기본 1). page=1→1~1000위, page=2→1001~2000위 …
size선택한 페이지 개수(1~1000, 기본 100). limit으로 줘도 동일(별칭).
minx,miny,maxx,maxy선택지역 범위(WGS84 경위도 bbox: 최소경도,최소위도,최대경도,최대위도). 4개 모두 주면 그 지역만, 생략하면 전국.
📄 전체를 나눠서 받기: 응답의 total(전체 개수)과 totalPages(총 페이지)를 보고 page를 1→2→3… 으로 올려가며 호출하면 전부 받을 수 있습니다. 예: 1만 개 → size=1000이면 totalPages=10, page 1~10 호출.

카테고리 코드 (cat)

코드분류코드분류
I201한식I206기타 외국식
I202중식I207구내식당/뷔페
I203일식I210간이/분식
I204서양식I211주점
I205동남아시아식I212카페/비알코올

응답 (JSON)

UTF-8 JSON. data는 rank(순위) 오름차순 배열입니다.

// GET https://gfreee.com/food/open/favranking?cat=I201&page=1&size=1000
{
  "result": "ok",
  "source": "gfreee.com 맛집지도",
  "attribution": "데이터 제공: gfreee.com (https://gfreee.com/food)",
  "type": "fav",              // fav=맛집(찜)순위, rating=평점순위
  "category": "I201",
  "total": 1250,          // 조건에 맞는 전체 개수 ← 이걸로 몇 페이지인지 계산
  "page": 1,
  "size": 1000,
  "totalPages": 2,       // page=1,2 호출하면 전부
  "count": 1000,         // 이번 페이지에 담긴 개수
  "data": [
    {
      "rank": 1,
      "id": "MA01...",          // 음식점 고유 ID(bizesId)
      "name": "소담",
      "categoryCode": "I201",
      "category": "한식",
      "rating": 9.2,          // 평균 평점(10점), 없으면 null
      "ratingCount": 15,      // 평점 참여 수
      "favCount": 8,          // 찜(즐겨찾기) 수
      "address": "서울 ...",
      "lat": 37.5665, "lon": 126.9780,
      "detailUrl": "https://gfreee.com/food"
    }
  ]
}

사용 예시

JavaScript — 전체를 페이지로 나눠 모두 받기

// total/totalPages를 보고 1페이지씩 끝까지 수집
async function fetchAll(cat){
  var size = 1000, page = 1, all = [];
  while (true) {
    var u = 'https://gfreee.com/food/open/favranking?size=' + size + '&page=' + page + (cat ? '&cat=' + cat : '');
    var d = await fetch(u).then(r => r.json());
    all = all.concat(d.data);
    if (page >= d.totalPages) break;   // 마지막 페이지면 종료
    page++;
  }
  return all;   // 전체 맛집 (예: 1만 개)
}

cURL — 특정 페이지

curl "https://gfreee.com/food/open/favranking?page=1&size=1000"   # 1~1000위
curl "https://gfreee.com/food/open/favranking?page=2&size=1000"   # 1001~2000위

직접 호출해보기

참고