빠른 시작 V4

처음 API를 쓰신다면 여기부터 — 5분 안에 첫 수집 데이터를 받아 봅니다.

API 키 하나로 봇 찾기 → 설정값 확인 → 수집 요청 → 완료 확인 → 데이터 받기까지 순서대로 호출합니다. 아래 명령을 터미널에 복사해 YOUR_API_KEY만 바꾸면 그대로 동작합니다.

약 5분
준비물
해시스크래퍼 계정 · 크롤링 봇 1개 · 크레딧(또는 이용권)
  1. API 키 복사하기

    내 정보 → API 키에서 키를 복사합니다. 모든 요청의 Authorization 헤더에 Bearer YOUR_API_KEY 형식으로 넣습니다.

    키는 비밀번호와 같습니다. 코드 저장소·화면 공유에 노출하지 마세요.

    내 정보에서 API 키 보기
  2. 연결 확인하기

    GET

    키가 맞는지 먼저 확인합니다. 내 계정 이메일이 돌아오면 준비가 끝났습니다.

    cURL
    curl 'https://www.hashscraper.com/v4/api/me' \
      -H 'Authorization: Bearer YOUR_API_KEY'

    "result": "success"와 내 이메일이 보이면 성공입니다. 401이면 키를 다시 복사하세요.

  3. 수집할 봇 고르기

    GET

    내 크롤링 봇 목록을 받아 수집할 봇의 id를 고릅니다. 봇 상세 화면의 더보기 → 봇 ID 복사하기로도 복사할 수 있습니다.

    cURL
    curl 'https://www.hashscraper.com/v4/api/schedules' \
      -H 'Authorization: Bearer YOUR_API_KEY'

    data[].id가 봇 ID입니다. 다음 단계에서 이 ID로 설정값을 확인합니다.

  4. 설정값 확인하기

    GET

    고른 봇이 어떤 입력값(키워드·정렬 등)을 쓰는지, 지금 저장된 값은 무엇인지, 고를 수 있는 값은 무엇인지 확인합니다.

    param_info에 나온 항목이 수집 요청 때 params에 넣어야 할 키입니다. param1 대신 alias(예: keyword)를 키로 써도 됩니다. options가 있는 항목은 그 목록의 value 중에서 골라 보내세요.

    cURL
    curl 'https://www.hashscraper.com/v4/api/schedules/8f3a7c1e9b5d24f6/param_info' \
      -H 'Authorization: Bearer YOUR_API_KEY'

    data.param_info의 키마다 name(뜻)·value(저장된 값)·options(고를 수 있는 값)를 확인하세요.

  5. 수집 요청하기

    POST

    고른 봇에 수집을 요청합니다. 봇이 쓰는 입력값은 params 안에 모두 넣어야 합니다(키가 빠지면 MISSING_PARAM). 이번 요청의 값은 봇 설정을 바꾸지 않습니다.

    요청이 받아들여지면 크레딧이 차감되고, 응답의 schedule_result_id가 이번 수집(데이터셋)의 번호입니다.

    cURL
    curl -X POST 'https://www.hashscraper.com/v4/api/schedules/8f3a7c1e9b5d24f6/collections' \
      -H 'Authorization: Bearer YOUR_API_KEY' \
      -H 'Content-Type: application/json' \
      -d '{ "params": { "param1": "키성장" } }'

    data.schedule_result_id를 다음 단계에 씁니다.

  6. 완료될 때까지 확인하기

    GET

    수집은 백그라운드에서 진행됩니다. 10~30초 간격으로 상태를 조회하세요. 사이트와 수집량에 따라 수십 초에서 수십 분이 걸립니다.

    cURL
    curl 'https://www.hashscraper.com/v4/api/schedule_results/239758028' \
      -H 'Authorization: Bearer YOUR_API_KEY'

    sr_status가 finish 또는 complete가 되면 완료입니다. data_count는 지금까지 모인 건수입니다.

  7. 데이터 받기

    GET

    완료된 데이터셋의 데이터를 받습니다. 한 번에 limit건씩 오며, 응답의 next_cursor를 다음 요청의 cursor로 넘겨 이어 받습니다.

    cURL
    curl 'https://www.hashscraper.com/v4/api/schedule_results/239758028/results?limit=1000' \
      -H 'Authorization: Bearer YOUR_API_KEY'

    next_cursor가 null이면 마지막 페이지입니다.

다음 단계

한 번에 실행하기 (Python)
import time
import requests

API_KEY = "YOUR_API_KEY"
BASE = "https://www.hashscraper.com/v4/api"
HEADERS = {"Authorization": f"Bearer {API_KEY}"}

# 2. 연결 확인
me = requests.get(f"{BASE}/me", headers=HEADERS).json()
print("계정:", me["data"]["email"])

# 3. 봇 고르기 — 목록의 첫 봇
bots = requests.get(f"{BASE}/schedules", headers=HEADERS).json()
bot = bots["data"][0]

# 4. 설정값 확인 (입력값·저장된 값·고를 수 있는 값)
url = f"{BASE}/schedules/{bot['id']}/param_info"
data = requests.get(url, headers=HEADERS).json()["data"]
info = data["param_info"]
params = {}
for key, item in info.items():
    choices = [o["value"] for o in item.get("options", [])]
    print(key, item["name"], item.get("value"), choices)
    params[key] = item.get("value") or ""

# 5. 수집 요청
url = f"{BASE}/schedules/{bot['id']}/collections"
res = requests.post(url, headers=HEADERS, json={"params": params})
sr_id = res.json()["data"]["schedule_result_id"]

# 6. 완료될 때까지 확인 (15초 간격)
while True:
    url = f"{BASE}/schedule_results/{sr_id}"
    data = requests.get(url, headers=HEADERS).json()["data"]
    status = data["sr_status"]
    if status in ("finish", "complete"):
        break
    if status in ("canceling", "canceled"):
        raise SystemExit("수집이 취소되었습니다")
    time.sleep(15)

# 7. 데이터 받기 (1,000건씩 이어 받기)
rows, cursor = [], None
while True:
    query = {"limit": 1000}
    if cursor:
        query["cursor"] = cursor
    url = f"{BASE}/schedule_results/{sr_id}/results"
    page = requests.get(url, headers=HEADERS, params=query).json()
    rows += page["data"]
    cursor = page["next_cursor"]
    if cursor is None:
        break

print(len(rows), "건을 받았습니다")

위 1~7단계를 이어 붙인 예시입니다. requests 패키지가 필요합니다.