로또 데이터 API

이 서비스는 동행복권 웹사이트에서 로또 6/45 당첨 데이터를 자동으로 수집하고, 이를 분석하여 JSON 형식의 API로 제공합니다.

최신 당첨 결과

데이터를 불러오는 중...

로또 통계 분석

번호별 출현 빈도

가장 많이 나온 번호

홀짝 비율

홀짝 패턴 분석

홀수와 짝수의 조합 패턴 분석입니다.

홀수(O), 짝수(E)로 표시됩니다.

구간별 분포

구간별 분석

1-10, 11-20, 21-30, 31-40, 41-45 구간별 번호 분포입니다.

연속 번호 출현 통계

전체 0회차 중 0회차(0%)에서 연속된 번호가 나왔습니다.

2쌍 이상의 연속 번호가 나온 회차는 0회차(0%)입니다.

가장 많이 나온 연속 번호 쌍

연속 번호 출현 횟수 비율

번호 간격 분포

전체 평균 간격: 0

가장 빈번한 간격

간격 출현 횟수 비율

당첨 번호 합계 분포

전체 평균 합계: 0 (최소: 0, 최대: 0)

가장 빈번한 합계/평균

자주 나온 합계 Top 5
합계 출현 횟수 비율
자주 나온 평균 Top 5
평균 출현 횟수 비율

현재 가장 오래 나오지 않은 번호

번호 휴면 회차 평균 휴면기간

최근 10회차 동안 나오지 않은 번호

자동/수동 당첨 비율

전체 1등 당첨 0건 중:

  • 자동: 0건 (0%)
  • 수동: 0건 (0%)

자동 비율이 가장 높았던 회차

회차 자동 비율 자동/수동

지역별 당첨 분포

지역별 당첨 현황

지역 당첨 횟수 비율

지역별 최다 당첨 판매점

API 엔드포인트

로또 전체 회차 목록

GET /lotto/index.json

모든 로또 회차의 목록을 제공합니다. 회차별 번호(draw_no) 기준으로 내림차순 정렬되어 있습니다.

{
  "draws": [
    {
      "draw_no": 1162,
      "draw_date": "2025-03-08",
      "file": "draws/lotto_1162.json"
    },
    {
      "draw_no": 1161,
      "draw_date": "2025-03-01",
      "file": "draws/lotto_1161.json"
    },
    ...
  ],
  "last_updated": "2025-03-10T17:32:57.390631"
}

로또 특정 회차 상세 정보

GET /lotto/draws/lotto_{회차번호}.json

특정 회차의 당첨 번호, 당첨금액, 1등 판매점 정보를 제공합니다.

{
  "draw_no": 1162,
  "draw_date": "2025-03-08",
  "numbers": [20, 21, 22, 25, 28, 29],
  "bonus_number": 6,
  "prize_info": [
    {
      "rank": "1등",
      "total_prize": "29,661,516,756원",
      "winner_count": "36",
      "prize_per_winner": "823,931,021원"
    },
    ...
  ],
  "total_sales_amount": "123,230,590,000원",
  "first_prize_store_info": [
    {
      "store_id": "11110012",
      "type": "자동"
    },
    ...
  ],
  "updated_at": "2025-03-10T17:32:57.381106"
}

로또 통계 분석 데이터

GET /lotto/statistics.json

번호별 출현 빈도, 패턴 분석, 연속번호, 휴면기간, 지역별 당첨 통계 등 다양한 통계 정보를 제공합니다.

{
  "total_draws": 1162,
  "first_draw": 1,
  "last_draw": 1162,
  "frequency_stats": {
    "most_frequent_numbers": [
      {"number": 34, "frequency": 190, "percentage": 16.35},
      {"number": 18, "frequency": 188, "percentage": 16.18},
      ...
    ],
    "least_frequent_numbers": [...],
    "all_numbers_frequency": [...]
  },
  "pattern_stats": {
    "odd_even_stats": {...},
    "range_stats": {...}
  },
  "consecutive_stats": {
    "draws_with_consecutive": 423,
    "draws_with_consecutive_percentage": 36.4,
    "top_consecutive_pairs": [...]
  },
  "gap_stats": {...},
  "sum_and_avg_stats": {...},
  "dormant_stats": {...},
  "auto_manual_ratio_stats": {...},
  "regional_stats": {...},
  "updated_at": "2025-03-10T17:32:57.714575"
}

로또 판매점 정보

GET /lotto/stores/{판매점ID}.json

특정 판매점의 상세 정보(이름, 주소, 전화번호, 취급복권 등)를 제공합니다.

{
  "store_id": "11110012",
  "name": "신일",
  "address": "서울 강서구 까치산로 177 1층 101호",
  "phone": "02-2618-3257",
  "lottery_types": [
    "lotto645"
  ]
}

로또 통합 판매점 정보

GET /lotto/lotto_stores.json

모든 판매점 정보를 하나의 파일로 제공합니다.

{
  "11110012": {
    "store_id": "11110012",
    "name": "신일",
    "address": "서울 강서구 까치산로 177 1층 101호",
    "phone": "02-2618-3257",
    "lottery_types": [
      "lotto645"
    ]
  },
  "12840241": {
    "store_id": "12840241",
    "name": "동행로또복권판매",
    "address": "인천 동구 화도진로 33-1 1층",
    "phone": "032-123-4567",
    "lottery_types": [
      "lotto645"
    ]
  },
  ...
}

연금복권 API 엔드포인트

연금복권 전체 회차 목록

GET /pension/index.json

모든 연금복권 회차의 목록을 제공합니다. 회차별 번호(draw_no) 기준으로 내림차순 정렬되어 있습니다.

{
  "draws": [
    {
      "draw_no": 253,
      "draw_date": "2025-03-06",
      "file": "draws/pension_253.json"
    },
    {
      "draw_no": 252,
      "draw_date": "2025-02-27",
      "file": "draws/pension_252.json"
    },
    ...
  ],
  "last_updated": "2025-03-12T14:06:50.793067"
}

연금복권 특정 회차 상세 정보

GET /pension/draws/pension_{회차번호}.json

특정 회차의 당첨 번호 정보를 제공합니다.

{
  "draw_no": 253,
  "draw_date": "2025-03-06",
  "group": "4",
  "numbers": [
    "4",
    "8",
    "4",
    "0",
    "1",
    "0"
  ],
  "bonus_group": "각",
  "bonus_numbers": [
    "9",
    "2",
    "1",
    "0",
    "6",
    "9"
  ],
  "prize_info": [
    {
      "rank": "1",
      "winner_count": "1"
    },
    {
      "rank": "2",
      "winner_count": "4"
    },
    ...
  ],
  "updated_at": "2025-03-12T14:06:50.793067"
}

연금복권 판매점 정보

GET /pension/stores/stores_{회차번호}.json

특정 회차의 1등, 2등, 보너스 당첨 판매점 정보를 제공합니다.

{
  "first_prize_store_info": [
    {
      "name": "행운의집로또",
      "address": "충남 아산시 배방읍 북수북길 7-4 1층 101,102호"
    }
  ],
  "second_prize_store_info": [
    {
      "name": "행운의집로또",
      "address": "충남 아산시 배방읍 북수북길 7-4 1층 101,102호"
    },
    ...
  ],
  "bonus_prize_store_info": [
    {
      "name": "인생여섯컷",
      "address": "경기 수원시 권선구 정조로384번길 2 (세류동) 1층"
    },
    ...
  ]
}

연금복권 통계 분석 데이터

GET /pension/statistics.json

번호별 출현 빈도, 등수별 당첨자 수, 판매점 통계 등 다양한 통계 정보를 제공합니다.

{
  "total_draws": 253,
  "first_draw": 1,
  "last_draw": 253,
  "frequency_stats": {
    "group_frequency": [
      {"group": "1", "frequency": 24, "percentage": 9.49},
      {"group": "2", "frequency": 25, "percentage": 9.88},
      ...
    ],
    "position_frequency": [...],
    "bonus_frequency": [...],
    "total_draws": 253
  },
  "prize_stats": {
    "rank_stats": [...]
  },
  "store_stats": {
    "region_stats": [...],
    "top_stores": [...]
  },
  "updated_at": "2025-03-12T14:06:50.793067"
}

사용 예시

JavaScript를 사용한 API 호출 예시:

// 최신 회차 목록 가져오기
fetch('lotto/index.json')
  .then(response => response.json())
  .then(data => {
    // 최신 회차 번호 - 항상 배열의 첫 번째 요소 (draw_no 기준 내림차순 정렬)
    const latestDraw = data.draws[0].draw_no;
    console.log(`최신 회차: ${latestDraw}`);
    console.log(`추첨일: ${data.draws[0].draw_date}`);
    
    // 최신 회차 상세 정보 가져오기
    return fetch(`lotto/${data.draws[0].file}`);
  })
  .then(response => response.json())
  .then(drawData => {
    displayLatestDraw(drawData);
  })
  .catch(error => {
    console.error('최신 회차 정보 로드 실패:', error);
  });

// 통계 데이터 로드
fetch('lotto/statistics.json')
  .then(response => response.json())
  .then(data => {
    // 가장 많이 나온 번호 5개 추출
    const topNumbers = data.frequency_stats.most_frequent_numbers.slice(0, 5);
    console.log('가장 많이 나온 번호:', topNumbers);
    
    // 연속번호 출현 통계
    console.log(`전체 ${data.total_draws}회 중 ${data.consecutive_stats.draws_with_consecutive}회(${data.consecutive_stats.draws_with_consecutive_percentage}%)에서 연속번호 출현`);
  })
  .catch(error => {
    console.error('통계 데이터 로드 실패:', error);
  });

프로젝트 소개

이 프로젝트는 동행복권 웹사이트에서 로또 6/45 당첨 데이터를 자동으로 수집하고, 이를 분석하여 사용자에게 유용한 통계 정보를 제공하는 시스템입니다.

주요 기능

  • 로또 당첨번호 및 판매점 정보 자동 수집
  • 번호별 출현 빈도 등 통계 데이터 제공
  • GitHub Actions를 통한 자동화된 데이터 수집
  • GitHub Pages를 통한 API 서비스 제공

기술 스택

  • 언어: Python 3.9+
  • 데이터 저장 형식: JSON
  • 웹 크롤링: BeautifulSoup4, Requests
  • 자동화: GitHub Actions
  • 배포 및 호스팅: GitHub Pages
  • 프론트엔드: HTML, CSS, JavaScript, Bootstrap, Chart.js

데이터 업데이트 주기

데이터는 매주 일요일 오전 9시(한국 시간)에 자동으로 업데이트됩니다. GitHub Actions를 통해 최신 로또 당첨 정보를 크롤링하고 통계 데이터를 갱신합니다.