계정 하나로 데이터, 검색, CAPTCHA 해결, 무료 AI API까지
EveryInfra는 106개 플랫폼에 걸친 573개의 데이터 수집 기능, 17개의 검색 도구, 52가지 CAPTCHA 유형, 그리고 충전 후 무료로 쓸 수 있는 OpenAI 호환 AI API를 제공합니다. 제품마다 엔드포인트, 권한, 요청 형식이 따로 있습니다.
- 공개 카탈로그는 API 키 없이 조회할 수 있습니다.
- 인증이 필요한 엔드포인트는 Bearer API 키를 사용합니다.
- MCP와 REST는 같은 기능, 파라미터, 응답을 사용합니다.
빠른 시작
실제 요청 보내기
콘솔에서 API 키를 만들고 해당 카탈로그를 확인한 뒤, 플랫폼 또는 기능 식별자를 목록에 나온 그대로 보내세요. 응답에는 구조화된 출력과 요청 단위 과금 정보가 포함됩니다.
Authorization: Bearer YOUR_API_KEY를 설정하세요.- JSON 요청 본문에는
Content-Type: application/json을 설정하세요. - 카탈로그 식별자와 파라미터 이름은 반환된 그대로 사용하세요.
- 처리가 오래 걸리는 작업, 한도가 큰 요청 또는 일괄 처리에는 요청 본문에
"mode":"async"를 보내세요. 즉시job_id를 받고,GET /api/v1/jobs/{job_id}를 폴링해 결과를 가져옵니다. 동기 요청은 85 초 안에 완료되어야 하며, 비동기 작업에는 이 제한이 적용되지 않습니다.
curl -X POST https://api.everyinfra.com/api/v1/social \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{"platform":"tiktok","action":"search","params":{"keyword":"AI infrastructure","limit":10}}'
{ "id": "…", "platform": "tiktok", "action": "search", "results": [ { "id": "…", "text": "…", "author_username": "…" } ], "count": 10, "billing": { "charged": true, "charged_usd": 0.000556, "balance_after_usd": 12.340122 } }
공개 카탈로그에서 지원 작업 찾기
카탈로그에서 지원 작업, 입력값, 가격, 이용 가능 여부를 확인하세요. 간략한 EveryData 카탈로그에는 액션별 핵심 정보가 나와 있으며, 선택 파라미터, 제한, 응답 필드는 전체 카탈로그에서 확인하세요. 가격과 이용 가능 여부는 하드코딩하지 말고 필요할 때마다 새로 조회하세요.
| 제품 | 카탈로그 엔드포인트 | 포함 내용 |
|---|---|---|
| EveryData | GET /api/v1/social/catalog?compact=1 | 플랫폼, 액션, 필수 파라미터, 전달 방식, 이용 가능 여부, 가격 |
| EverySearch | GET /api/v1/search/tools | 검색 도구, 요청 파라미터, 티어, 가격 |
| EverySolve | GET /api/v1/captcha/types | CAPTCHA 유형, 파라미터, 해결 결과 형식, 이용 가능 여부, 가격 |
| AI API | GET /api/v1/models | AI API가 현재 지원하는 모델(API 키 불필요) |
인증
API 키는 Bearer 토큰으로 보내세요. 인증은 파라미터 검증보다 먼저 실행되므로, 유효한 키가 없는 요청은 파라미터 관련 피드백 대신 401을 받습니다. 키를 브라우저 코드, 로그, 공개 저장소에 두지 마세요.
- 환경이나 워크로드별로 키를 따로 만드세요.
- 키의 사용 범위가 바뀌거나 키가 노출되었을 때는 콘솔에서 키를 교체하세요.
- 키를 특정 제품, 기능, IP 대역으로 제한하려면 콘솔의 제한 설정을 사용하세요.
- 같은 키로
GET /api/v1/account를 호출하면 잔액(유료, 보너스, 합계), 이번 달 충전 할인, 분당 요청 한도, 최근 24시간 사용량을 확인할 수 있습니다. 금액 단위는 USD입니다. 이 호출은 읽기 전용이고 무료이며 분당 한도에 포함되지 않습니다. - 이 응답에서
balance.total_usd는 유료 잔액과 보너스 잔액의 합계이며, 호출 시 보너스 잔액이 먼저 차감됩니다.bonus_expiring에는 아직 만료되지 않은 기간 한정 보너스 금액이 나열됩니다.rate_limit.requests_per_minute는 계정의 모든 키가 공유하며,usage_24h는 약 1분 늦게 반영될 수 있습니다. - 계정 전체 내역(일별 사용량, 최근 호출, 과금, 지갑 원장)은 같은 키로 콘솔 API에서 조회할 수 있습니다. 예를 들어
GET /portal/api/requests/{request_id}를 호출하거나, 기능별 성공률과 지연 시간은GET /portal/api/quality로 확인합니다. 키에 계정 읽기 권한이 있어야 하며, 이러한 조회는 무료이고 계정당 분당 60회로 제한됩니다. 전체 목록은 OpenAPI 명세의 Account 섹션에 있습니다. - AI가 계정을 변경할 수도 있게 하려면 API 키 → 접근 제한에서 쓰기 범위를 부여하세요. 키 관리, 설정 변경, 티켓 열기 및 답변의 세 가지입니다. 세 가지 모두 기본적으로 꺼져 있으며, 콘솔에 로그인한 본인만 켤 수 있습니다. 키를 통해서는 하루 최대 20개의 키를 만들 수 있고, 티켓에는 일일 한도가 없습니다. 전체 키 보기나 교체, 권한 또는 IP 허용 목록 변경, 키 재활성화, 결제는 항상 콘솔에서만 할 수 있습니다. 엔드포인트는 OpenAPI 명세의 Account 섹션에 나와 있습니다. 예:
POST /portal/api/keys/{key_id}/disable. - 폴링을 피하려면 콘솔의 설정 → 웹훅에 HTTPS 엔드포인트를 추가하세요. 잔액이 지정한 임계값까지 떨어지거나 비동기 작업이 완료되면 서명된 POST를 보내 드립니다.
X-EveryInfra-Signature를 검증하세요. 이 값은 타임스탬프, 마침표, 원본 본문을 이어 붙여 서명 시크릿으로 만든 HMAC-SHA256입니다. 타임스탬프가 5분 넘게 차이 나면 거부하세요. 실패한 전송은 백오프를 적용해 최대 7회까지 재시도되므로 이벤트 ID로 중복을 제거하세요.
이 키로 네 가지 제품을 모두 사용할 수 있으며, 하나의 지갑을 공유합니다
curl https://api.everyinfra.com/api/v1/account \ -H "Authorization: Bearer YOUR_API_KEY"
POST /api/v1/social
EveryData
106개 플랫폼에서 지원되는 573개 액션을 사용해 데이터를 수집합니다. 플랫폼과 액션을 선택한 다음, 해당 액션에 명시된 입력값을 전달하세요.
GET /api/v1/social/catalog?compact=1
POST /api/v1/search
EverySearch
17개 도구 중에서 골라 웹을 검색하고 원문 텍스트를 가져옵니다. 도구 식별자를 지정하고 필수 입력값을 전달하세요.
GET /api/v1/search/tools
POST /api/v1/captcha
EverySolve
하나의 엔드포인트로 52가지 CAPTCHA 유형을 해결합니다. type 필드를 설정하고 필수 입력값을 전달하세요. 해결에 성공한 경우에만 과금됩니다.
GET /api/v1/captcha/types
POST /api/v1/chat/completions
AI API
OpenAI 호환 chat/completions로, 충전한 계정은 무료로 사용할 수 있습니다. 수집한 데이터를 정제, 분류, 추출, 요약하는 데 활용하세요.
GET /api/v1/models
요청 파라미터 검증
알 수 없는 파라미터에는 지원되는 파라미터 목록과 함께 422가 반환되며, 가능한 경우 가장 비슷한 이름도 제안됩니다. 잘못된 enum 값에는 허용되는 값이 반환됩니다. 파라미터는 별도 안내 없이 무시되거나 기본값으로 대체되지 않습니다.
- 카탈로그에 나온 snake_case 파라미터 이름을 사용하세요.
did_you_mean은 성공적인 대체 처리가 아니라 수정을 위한 힌트로 다루세요.- 여러 대상을 입력할 때는 배열을 보내기 전에 카탈로그의 과금 및 제한 규칙을 확인하세요.
API 레퍼런스
106개 플랫폼과 573개 API 전체를 카테고리별로 정리했습니다. 플랫폼을 열면 개요를, API를 열면 파라미터, 응답 필드, 코드 예제를 볼 수 있습니다.
이커머스플랫폼 15개 · API 58개
- 16883 API
- AliExpress6 API
- Amazon10 API
- Craigslist1 API
- Dewu1 API
- eBay5 API
- Etsy5 API
- Google Shopping1 API
- JD.com7 API
- Shopee4 API
- Taobao5 API
- Temu2 API
- ThomasNet2 API
- Walmart4 API
- Xianyu2 API
소셜 및 콘텐츠플랫폼 51개 · API 389개
- Behance2 API
- Bilibili8 API
- Bluesky5 API
- Dailymotion6 API
- DeviantArt4 API
- Discord4 API
- Douban4 API
- Douyin37 API
- 검색
- 상세 정보
- 사용자 게시물
- 동영상 상세 정보
- 댓글
- 댓글 답글
- 인기 급상승
- 트랜스크립트
- 크리에이터 검색
- 크리에이터 오디언스
- 크리에이터 성장 추이
- 크리에이터 벤치마크
- Xingtu 크리에이터 검색
- Xingtu 크리에이터 분석
- Xingtu 크리에이터 단가표
- Xingtu 크리에이터 순위
- 상품 검색
- 상품 상세 정보
- 라이브 상품 검색
- 해시태그 검색
- 해시태그 상세
- 인기 동영상 순위
- 팔로워가 적은 계정의 인기 콘텐츠 순위
- 완주율 상위 목록
- 인기 검색 순위
- 핫스팟 계정 검색
- 음악 검색
- 검색어 추천
- 급상승 순위
- 챌린지 인기 순위
- 토픽 인기 순위
- 음악 상세
- Xingtu 크리에이터 전환 능력
- Xingtu 연결 사용자 구조
- Xingtu 추천 동영상
- Xingtu 연결 사용자 유입 경로
- Xingtu 동영상 성과
- Dribbble3 API
- Eventbrite1 API
- Facebook16 API
- Flickr2 API
- Gab4 API
- GitHub9 API
- Instagram18 API
- iQIYI3 API
- Kuaishou12 API
- Lemmy4 API
- LinkedIn11 API
- Mastodon5 API
- Medium3 API
- Naver4 API
- NetEase Cloud Music3 API
- Odysee4 API
- Patreon4 API
- Pinterest7 API
- Product Hunt4 API
- Quora6 API
- Reddit8 API
- Rumble6 API
- Snapchat4 API
- SoundCloud6 API
- Spotify7 API
- Substack7 API
- Telegram6 API
- Threads7 API
- TikTok24 API
- Toutiao6 API
- Truth Social5 API
- Tumblr4 API
- Twitch6 API
- X (Twitter)21 API
- VK2 API
- WeChat Channels5 API
- WeChat Official Accounts13 API
- Weibo11 API
- Xiaohongshu17 API
- Xing4 API
- Youku4 API
- YouTube8 API
- Zhihu15 API
리뷰 및 로컬 서비스플랫폼 23개 · API 86개
검색 및 뉴스플랫폼 17개 · API 40개
- Apple Maps1 API
- Bing1 API
- Bing Maps1 API
- 기업 데이터4 API
- 암호화폐 시장 데이터5 API
- 암호화폐 뉴스2 API
- DuckDuckGo1 API
- DuckDuckGo Maps1 API
- Google Ads Transparency Center1 API
- Google News1 API
- Google Trends1 API
- Kalshi1 API
- Polymarket3 API
- SimilarWeb3 API
- SERP1 API
- Yahoo Finance10 API
- Yandex3 API
AI API(충전 후 무료)
AI API는 OpenAI 호환 chat/completions입니다. 충전한 적이 있는 계정은 잔액을 쓰지 않고 무료로 호출해 수집한 데이터를 정제, 중복 제거, 분류, 추출, 요약할 수 있으며, 출력 형식은 프롬프트로 정합니다.
- OpenAI SDK를 사용할 때
base_url값은https://api.everyinfra.com/api/v1입니다. EveryInfra API 키는Authorization: Bearer헤더로 보내세요. URL에?key=를 넣으면 거부됩니다. - 채팅 엔드포인트는
POST /api/v1/chat/completions이며, OpenAI와 같은 요청 및 응답 형식을 사용합니다. - 모델은 기본 모델인
gemini-3.6-flash, 더 가벼운 모델인gemini-flash-lite두 가지입니다.GET /api/v1/models도 같은 목록을 반환하며 키가 필요하지 않습니다. 모델 이름을 잘못 입력하면 올바른 이름 후보와 함께 422가 반환됩니다. - 스트리밍을 지원합니다.
stream: true를 보내면data: [DONE]으로 끝나는 SSE를 받으며, 토큰 사용량을 받으려면stream_options.include_usage를 추가하세요. messages는 합계 최대 45,000자까지 보낼 수 있습니다. 이보다 크면 422input_too_large가 반환되므로 더 작은 요청으로 나누어 보내세요.
from openai import OpenAI import os client = OpenAI(base_url="https://api.everyinfra.com/api/v1", api_key=os.environ["EVERYINFRA_API_KEY"]) reply = client.chat.completions.create( model="gemini-3.6-flash", messages=[{"role": "user", "content": "JSON만 반환하세요: 이 리뷰의 감성, 주제, 의도를 라벨링하세요."}], ) print(reply.choices[0].message.content)
누적 충전액별 한도(계정의 모든 키 합산)
| 누적 충전액 | 분당 요청 수 | 동시 요청 수 |
|---|---|---|
| 충전 완료, $100 미만 | 50 | 5 |
| $100 이상 | 500 | 50 |
| $500 이상 | 5,000 | 500 |
건당 $1를 초과하는 크레딧 코드와 보너스 크레딧은 충전으로 간주되지만, 체험용 크레딧과 $1 이하 금액은 포함되지 않습니다. 충전한 적이 없고 $1를 초과하는 크레딧 코드나 보너스 크레딧을 받은 적도 없는 계정은 403 ai_topup_required를 받습니다. 티어별 수치는 상한값입니다.
| 상태 | 의미 |
|---|---|
| 403 ai_topup_required | 계정이 한 번도 충전하지 않았습니다. 금액과 관계없이 충전하면 AI API를 사용할 수 있습니다. |
| 429 rate_limited | 분당 한도에 도달했거나(per_minute_limit) 동시에 처리 중인 요청이 너무 많습니다(concurrency_limit). Retry-After만큼 기다린 뒤 재시도하세요. |
| 503 ai_busy | 서비스가 혼잡합니다. Retry-After 이후에 재시도하세요. |
| 403 ai_disabled | 이 계정의 AI API 사용이 일시 중지되었습니다. |
| 422 unknown_model | 존재하지 않는 모델입니다. 메시지에 올바른 이름 후보가 표시됩니다. |
AI API는 EveryInfra로 수집한 데이터를 정리하기 위한 기능입니다. 다른 용도로 사용하거나 호출이 명백히 비정상적으로 보이면 해당 계정의 AI API를 일시 중지할 수 있습니다. 이 경우에도 계정 자체, 다른 API, 잔액에는 영향이 없습니다.
AI 에이전트를 위한 MCP
호환 클라이언트에서 EveryInfra 도구를 직접 탐색하고 호출해야 할 때 MCP를 사용합니다. 도구는 데이터, 검색, CAPTCHA, 그리고 everyinfra_chat을 통한 AI 채팅(충전 후 무료, 스트리밍 미지원)을 제공하며, REST API와 동일한 인증, 과금, 제한, 검증, 잔액 규칙을 따릅니다.
- 클라이언트에 원격 서버 URL과 EveryInfra API 키를 설정합니다.
- 두 엔드포인트는 같은 키를 사용합니다.
https://api.everyinfra.com/mcp에는 공통 도구 12개(데이터, 검색, CAPTCHA, AI 채팅과 함께 잔액, 호출 기록, 충전 링크, 지원 티켓)가 표시되고,https://api.everyinfra.com/mcp/all에는 전체 24개가 표시됩니다. 아래의 계정 기록 도구와 관리 도구는 후자에만 표시됩니다. - 계정 도구의 이름이 동사로 시작하는 형식으로 바뀌었습니다(예:
everyinfra_account는 이제everyinfra_get_account입니다). 기존 이름도 두 엔드포인트에서 계속 동작하지만 목록에는 더 이상 표시되지 않으므로, 기존 이름을 호출하는 스크립트는 수정할 필요가 없습니다. AI 클라이언트에서 이 도구를 사용하려면 커넥터의 주소를/mcp/all로 설정합니다. - 데이터, 검색, CAPTCHA를 호출하기 전에 기능 탐색을 먼저 실행합니다.
- API 키는 클라이언트의 시크릿 설정이나 환경 설정에 보관합니다.
- 무료 도구
everyinfra_get_account(인수 없음)를 호출해 잔액, 할인, 분당 제한, 최근 사용량을 확인합니다.GET /api/v1/account와 동일한 요약을 반환합니다. mode: "async"로 데이터를 호출한 뒤에는 무료 도구everyinfra_get_job에 반환된job_id를 넣어 결과를 조회합니다.GET /api/v1/jobs/{job_id}와 동일한 정보를 반환합니다.- 계정 기록은 무료 도구
everyinfra_get_usage,everyinfra_list_requests,everyinfra_get_billing,everyinfra_list_keys,everyinfra_list_tickets로 조회합니다. 각각 일별 사용량, 최근 호출(request_id로 개별 호출을 조회하면 과금이 어떻게 정산되었는지 확인할 수 있음), 지출 내역과 지갑 원장, 키 목록, 지원 티켓 목록을 반환합니다. 이 도구를 사용하려면 키에 계정 읽기 권한이 있어야 합니다. 제품 라인 제한이 없는 키는 기본적으로 사용량, 호출, 과금 내역을 읽을 수 있습니다. 제품 라인 제한 키의 계정 읽기 권한과 티켓 접근 권한은 콘솔의 API 키 → 접근 제한에서 활성화합니다. - 계정에 잔액이 필요하면
everyinfra_get_topup_link가 콘솔 충전 페이지를 반환합니다. 결제는 계정 소유자가 해당 페이지에서 직접 진행하며, 이 도구는 결제를 생성하거나 요금을 청구하지 않습니다. - 호출이 계속 실패하거나, 데이터가 잘못된 것 같거나, 충전 또는 과금 내역을 확인해야 하거나, 새 플랫폼이나 필드가 필요하면 어떤 키로든
everyinfra_create_ticket을 통해 담당자가 직접 응대하는 지원 티켓을 열 수 있습니다. 무료이며 추가 권한도 필요 없습니다. 이 도구는 티켓 번호와 콘솔 링크를 반환하며, 이후everyinfra_get_ticket으로 티켓 진행 상황과 지원팀의 답변을 확인할 수 있습니다. REST에서는 같은 호출이POST /api/v1/support/tickets와GET /api/v1/support/tickets/{ticket_id}입니다. 기존everyinfra_ticket_create(쓰기 범위 필요)도 계속 동작하지만, 새 연동에는everyinfra_create_ticket을 사용해야 합니다. - 계정 소유자가 콘솔에서 키에 쓰기 범위를 부여하면 AI가
everyinfra_create_key,everyinfra_update_key,everyinfra_disable_key,everyinfra_delete_key,everyinfra_update_settings,everyinfra_set_webhook,everyinfra_test_webhook,everyinfra_reply_ticket도 사용할 수 있습니다. 이 방식으로 생성한 키는 호출한 키보다 넓은 권한을 가질 수 없고 쓰기 범위도 받지 않습니다. 콘솔에서 생성한 키는 비활성화만 할 수 있으며, 모든 변경 사항은 콘솔 알림에 표시됩니다.
- Endpoint
- POST /mcp
- 전송 방식
- Streamable HTTP, 무상태(stateless)
- 도구
- 도구 이름은
everyinfra_로 시작합니다. 이름이 바뀐 도구도 기존 이름으로 계속 호출할 수 있으므로 프롬프트와 워크플로를 그대로 사용할 수 있습니다.
IPFoxy 프록시와 함께 사용하기
EveryInfra API 호출에는 프록시가 필요하지 않습니다. 요청은 api.everyinfra.com으로 직접 전송되며, 필드명이 명시된 JSON을 반환합니다. 자체 프로그램은 이와 다릅니다. 크롤러나 브라우저 자동화가 특정 국가의 사용자로서 페이지를 열어야 한다면 해당 국가의 출구 IP가 필요합니다.
따라서 역할 분담은 간단합니다. IPFoxy는 직접 보내는 요청에 다른 출구 IP를 제공합니다. EveryInfra는 카탈로그에 있는 플랫폼의 구조화된 데이터를 제공합니다.
| 작업 | 사용할 도구 |
|---|---|
| 국가별로 달라지는 페이지 열기(현지 가격, 배송, 광고 노출 위치) 또는 내 스토어와 계정에 로그인 | IPFoxy 프록시 + 크롤러 또는 브라우저 |
| 데이터 API 카탈로그에 없는 사이트나 필드 수집 | IPFoxy 프록시 + 크롤러 |
| 카탈로그 플랫폼 데이터를 스프레드시트나 데이터베이스용으로 대량 수집 | EveryInfra 데이터 API를 프록시 없이 직접 호출 |
아래 Python 예제는 두 단계를 하나의 스크립트로 처리합니다. 1단계에서는 IPFoxy 출구 IP를 거쳐 ipinfo.io를 호출하고 출구 국가를 출력합니다. 2단계에서는 EveryInfra를 직접 호출해 Amazon 상품 하나를 조회합니다. 실행하기 전에 환경 변수 두 개를 설정하세요. EVERYINFRA_API_KEY는 API 키이고, IPFOXY_PROXY는 IPFoxy 대시보드에서 받은 http://username:password@host:port 형식의 연결 문자열입니다. requests는 pip install requests로 설치합니다.
import os import requests EVERYINFRA_API_KEY = os.environ["EVERYINFRA_API_KEY"] IPFOXY_PROXY = os.environ["IPFOXY_PROXY"] # http://username:password@host:port PROXIES = {"http": IPFOXY_PROXY, "https": IPFOXY_PROXY} # 1. 직접 보내는 요청은 IPFoxy 출구 IP를 거쳐 나갑니다. exit_ip = requests.get("https://ipinfo.io/json", proxies=PROXIES, timeout=30).json() print("Exit IP country:", exit_ip.get("country")) # 2. EveryInfra 호출은 직접 전송되며 프록시가 필요하지 않습니다. direct = requests.Session() direct.trust_env = False # HTTP(S)_PROXY를 무시하므로 이 호출은 프록시 트래픽을 쓰지 않습니다 resp = direct.post( "https://api.everyinfra.com/api/v1/social", headers={"Authorization": f"Bearer {EVERYINFRA_API_KEY}"}, json={ "platform": "amazon", "action": "profile", "params": {"url": "https://www.amazon.com/dp/B0CYJDVT31"}, }, timeout=120, ) resp.raise_for_status() body = resp.json() item = body["results"] print(item["title"][:60], item["currency"], item["price"], item["rating"]) print("Charged USD:", body["billing"]["charged_usd"])
direct.trust_env = False를 설정하면 EveryInfra 호출이HTTP_PROXY와HTTPS_PROXY환경 변수를 무시합니다. 이 설정이 없으면 시스템 전체 프록시가 이 호출도 처리하므로, 그만큼 프록시 트래픽 비용을 내게 됩니다.- 프록시가 407을 반환하면 사용자 이름이나 비밀번호가 잘못된 것입니다. 이때 예제는 EveryInfra를 호출하기 전에 중단되므로 과금되지 않습니다. IPFoxy 고객센터에 따르면 프록시는 중국 본토 외부 네트워크에서 코드를 실행할 때만 작동합니다.
- 이 코드는 2026년 10월 24일에 실행했습니다. EveryInfra 호출은 상품명, 가격, 평점을 반환했고 $0.001389가 과금되었습니다. 저희는 IPFoxy 계정이 없어서 프록시 단계를 로컬 목(mock) 프록시로 테스트했습니다. 테스트 항목은 주소 형식,
CONNECT터널, 407 응답입니다. - 페이지 하나를 불러올 때 사용하는 프록시 트래픽은 HTML만 받으면 약 0.44 MB이고, 브라우저에서 전체 페이지를 로드하면 약 7.96 MB입니다. IPFoxy 요금제별 1,000페이지당 비용과 필요한 성공률은 다음 글에서 확인하세요: Amazon 페이지 하나는 프록시 트래픽을 얼마나 사용할까?.
- 전체 예제, 로컬 목 프록시, 바이트 측정 스크립트는 GitHub에서 볼 수 있습니다: everyinfra-agent-plugins / examples / proxy-plus-data-api.
추천 링크 고지: 아래 "IPFoxy 방문하기" 링크는 IPFoxy가 제공한 추천 링크로, 저희 추천 코드가 포함되어 있습니다. 이 링크를 통해 회원가입하거나 구매하시면 IPFoxy가 저희에게 수수료를 지급할 수 있습니다. IPFoxy는 저희 파트너입니다.
IPFoxy 방문하기 (새 탭에서 열림)IPFoxy 제품과 가격은 파트너 페이지에서 확인할 수 있습니다.
Exa 검색과 함께 사용하기
Exa는 의미를 기준으로 웹을 검색합니다. 검색어에 페이지에 있는 단어가 들어 있지 않아도 Exa는 적합한 기업, 기사, 논문을 찾아 결과와 함께 본문 텍스트를 반환합니다. EveryInfra는 G2와 Trustpilot의 평점과 리뷰, YouTube 댓글 같은 구조화된 플랫폼 데이터를 이름이 지정된 필드로 구성된 JSON으로 제공합니다.
자주 쓰는 패턴은 Exa로 대상 목록을 만든 다음, EveryInfra로 각 항목에 플랫폼 데이터를 추가하는 것입니다.
| 작업 | 사용할 도구 |
|---|---|
| 의미를 기준으로 기업, 기사, 논문 목록과 본문 텍스트 찾기 | Exa |
| 특정 제품의 G2 또는 Trustpilot 평점, 리뷰 수, 리뷰 본문 | EveryInfra g2 및 trustpilot API |
| YouTube 동영상의 댓글과 좋아요 수 | EveryInfra youtube API(Exa는 동영상 자막 텍스트는 반환하지만 댓글은 반환하지 않음) |
아래 Python 예제는 경쟁사 리뷰 표를 만듭니다. 1단계에서는 Exa에서 "note-taking apps similar to Obsidian"을 검색합니다. category: "company"를 지정하면 기업 홈페이지만 반환됩니다. 2단계에서는 기업마다 EveryInfra g2/search API를 호출해 G2 평점과 리뷰 수를 읽습니다. 실행하기 전에 환경 변수 두 개를 설정하세요. EXA_API_KEY는 Exa 대시보드에서 받은 키이고, EVERYINFRA_API_KEY는 EveryInfra API 키입니다. requests는 pip install requests로 설치합니다.
import os from concurrent.futures import ThreadPoolExecutor from urllib.parse import urlsplit import requests EXA_API_KEY = os.environ["EXA_API_KEY"] EVERYINFRA_API_KEY = os.environ["EVERYINFRA_API_KEY"] QUESTION = "note-taking apps similar to Obsidian" # 1. Exa: 키워드가 아닌 의미로 기업 찾기 companies = requests.post( "https://api.exa.ai/search", headers={"x-api-key": EXA_API_KEY}, json={"query": QUESTION, "category": "company", "type": "auto", "numResults": 10}, timeout=60, ).json()["results"] # 2. EveryInfra: 기업별 G2 평점과 리뷰 수 def g2_rating(company): name = company["title"].split(" - ")[0].split(" | ")[0].strip() resp = requests.post( "https://api.everyinfra.com/api/v1/social", headers={"Authorization": f"Bearer {EVERYINFRA_API_KEY}"}, json={"platform": "g2", "action": "search", "params": {"keyword": name}}, timeout=180, ) resp.raise_for_status() body = resp.json() match = next((p for p in body["results"] if p["product_name"].lower() == name.lower()), None) return name, match, body["billing"]["charged_usd"] with ThreadPoolExecutor(max_workers=4) as pool: rows = list(pool.map(g2_rating, companies)) spent = 0.0 for company, (name, g2, charged) in zip(companies, rows): spent += charged domain = urlsplit(company["url"]).hostname.removeprefix("www.") if g2 and g2["review_count"]: print(f"{name:12} {domain:16} G2 {g2['rating']} / 5 · {g2['review_count']} reviews") else: print(f"{name:12} {domain:16} no G2 reviews yet") print("EveryInfra charged (USD):", round(spent, 6))
- 2026년 10월 25일에 이 코드를 그대로 실행했습니다. Exa는 기업 홈페이지 10개를 반환했고, 몇 분 뒤 다시 검색했을 때도 같은 10개를 반환했습니다. 10개 중 7개에 G2 평점과 리뷰가 있었습니다. 예를 들어 Goodnotes는 4.7점에 리뷰 123개, Milanote는 4.5점에 리뷰 42개입니다. 영어, 중국어, 스페인어 버전을 한 번씩 실행했고, 실행마다 44–51초가 걸렸습니다. EveryInfra 과금액은 $0.01389(
g2/search호출 10회)였고, Exa 검색 비용은 $0.007이었습니다. - 기업 이름이 G2 제품명과 정확히 같을 때만 일치로 인정합니다. 예제는 Exa 결과 제목에서 " - " 뒤의 내용을 모두 잘라 냅니다. 저희가 실행했을 때 G2에는 Brainio라는 제품이 없었고, Yaranga와 Brainfo는 G2 페이지는 있지만 아직 리뷰가 없었습니다.
g2/search호출은 이름이 같은 제품이 없어도 API가 검색 결과를 반환하므로 호출마다 한 번씩($0.001389) 과금됩니다. 호출 한 번에 약 30–70초가 걸리므로 예제는 4건씩 동시에 실행합니다.- Trustpilot을 조회하려면 2단계를
trustpilot/profile로 바꾸고company에 기업 도메인을 넣으세요. 같은 기업 7곳 중 4곳에 Trustpilot 프로필이 있었습니다. 프로필이 없는 기업은 빈 결과를 반환하며 과금되지 않습니다. - Exa 결과에는 Reddit 스레드가 포함되지 않습니다.
includeDomains를 reddit.com으로 설정하자 결과가 0건이었고, 비용은 들지 않았습니다. - 3개 카테고리, 30개 기업의 커버리지, 정확한 이름 일치 방식에서 누락되는 주요 기업, 전체 데이터는 다음 글에서 확인하세요: Exa가 경쟁사를 찾고 EveryInfra가 리뷰를 확인한다.
EveryInfra와 Exa는 파트너입니다. 아래 "Exa 방문하기" 링크는 추천 코드가 없는 일반 링크입니다.
Exa 방문하기 (새 창에서 열림)Exa 제품과 가격은 파트너 페이지에서 확인할 수 있습니다.
Monid와 함께 사용하기
Monid는 AI 에이전트를 위한 도구 라우터입니다. 에이전트가 필요한 것을 한 문장으로 설명하면 discover가 적합한 엔드포인트와 가격을 무료로 반환하고, inspect가 입력 스키마와 현재 가격을 무료로 반환합니다. 과금되는 것은 run뿐이며, 그 가격만큼 하나의 선불 잔액에서 차감됩니다. EveryInfra는 고정된 플랫폼 데이터 API를 제공합니다. 요청 형식은 하나이고, 기능마다 필드 이름과 가격이 고정되어 있습니다.
흔히 쓰는 기준은 호출이 얼마나 자주 반복되는지입니다. EveryInfra 카탈로그에 있는 플랫폼(2026년 11월 3일 기준 106개, 최신 목록은 GET /api/v1/social/catalog에서 확인)은 EveryInfra로 보냅니다. 카탈로그에 없는 플랫폼과 데이터가 아닌 도구(날씨, 지오코딩, 기업 로고, 이미지 생성)는 Monid로 보냅니다.
| 작업 | 사용할 도구 |
|---|---|
| 매일 수집하는 플랫폼 데이터(예: Xiaohongshu 검색, Amazon 상품, YouTube 댓글) | EveryInfra API 또는 MCP 도구 everyinfra_call_api(지원 플랫폼은 카탈로그에서 확인) |
| EveryInfra 카탈로그에 없는 플랫폼 또는 가끔만 필요한 도구 | Monid: discover로 엔드포인트를 찾고 inspect로 가격을 확인한 다음 run 실행 |
| 어떤 도구를 써야 할지 아직 모를 때 | Monid discover(무료, 순위가 매겨진 후보와 가격 반환) |
아래 Python 예제는 두 종류의 호출을 하나의 스크립트에 담았습니다. 1단계는 매일 하는 작업으로, EveryInfra xiaohongshu/search로 "matcha latte"를 좋아요 많은 순으로 검색하고 상위 노트 3개와 과금액을 출력합니다. 2단계는 일회성 작업으로, Monid에서 도메인으로 기업 로고를 반환하는 도구를 찾고, inspect로 확인한 가격이 MAX_PRICE_USD 이하일 때만 실행합니다. 실행하기 전에 환경 변수 두 개를 설정하세요. EVERYINFRA_API_KEY는 EveryInfra API 키이고, MONID_API_KEY는 Monid 대시보드(app.monid.ai)에서 생성한 API 키입니다. requests는 pip install requests로 설치합니다.
import os import requests EVERYINFRA_API_KEY = os.environ["EVERYINFRA_API_KEY"] MONID_API_KEY = os.environ["MONID_API_KEY"] MONID = "https://api.monid.ai/v1" MONID_HEADERS = {"Authorization": f"Bearer {MONID_API_KEY}"} MAX_PRICE_USD = 0.01 # do not run a Monid tool that costs more than this per call # 1. The daily job: EveryInfra xiaohongshu/search, one fixed request shape resp = requests.post( "https://api.everyinfra.com/api/v1/social", headers={"Authorization": f"Bearer {EVERYINFRA_API_KEY}"}, json={"platform": "xiaohongshu", "action": "search", "params": {"keyword": "matcha latte", "sort": "most_liked"}}, timeout=120, ) resp.raise_for_status() body = resp.json() for note in body["results"][:3]: print(note["like_count"], note["collect_count"], note["posted_at"][:10], note["url"]) print("EveryInfra:", len(body["results"]), "notes, charged (USD):", body["billing"]["charged_usd"]) # 2. A one-off lookup that is not a daily platform: discover, inspect, run on Monid found = requests.post(f"{MONID}/discover", headers=MONID_HEADERS, timeout=60, json={"query": "company logo image URL from a domain", "limit": 3}).json()["results"] # discover adds ranking and price fields to each result; inspect and run take only the fields that name the tool SHOWN_ONLY = ("providerName", "description", "price", "score", "scoreBreakdown", "tags", "metrics", "hints") tool = {key: value for key, value in found[0].items() if key not in SHOWN_ONLY} detail = requests.post(f"{MONID}/inspect", headers=MONID_HEADERS, timeout=60, json=tool).json() price = detail["price"]["amount"]["value"] print("Monid tool:", detail["endpoint"], "price (USD):", price) if price <= MAX_PRICE_USD: run = requests.post(f"{MONID}/run", headers=MONID_HEADERS, timeout=120, json={**tool, "input": {"pathParams": {"company": "starbucks.com"}}}).json() print("Monid run:", run.get("runId"), run.get("status"), run.get("output"))
- 2026년 11월 3일 16:45(싱가포르 시간)에 이 코드를 그대로 실행했습니다. EveryInfra는 노트 20개를 반환하고 $0.005556를 과금했습니다. Monid
discover는 기업 로고 엔드포인트를 1순위로 제시했고,inspect는 호출당 $0를 표시했으며,run은 COMPLETED 상태와 로고 이미지 URL을 반환했습니다. 스크립트 실행에는 6–7초가 걸렸습니다. 중국어, 영어, 스페인어 버전을 한 번씩 실행했습니다(중국어 버전은 음료의 중국어 이름으로 검색했습니다). xiaohongshu/search호출 한 번은 노트를 최대 20개까지 담은 한 페이지를 반환하며 $0.005556가 과금됩니다. 노트가 없는 페이지는 과금되지 않습니다. 다음 페이지를 받으려면 결과의next_page_token을 다시 보내세요.- Monid는
discover와inspect에 요금을 부과하지 않으며,run만inspect에 표시된 가격으로 과금합니다. 실행이 진행되는 동안 Monid는 예상 비용을 잔액에서 보류해 두었다가 실행이 끝나면 실제 금액으로 정산합니다(Monid llms.txt, 2026-11-03 확인). 예제는MAX_PRICE_USD로 예산을 넘는 도구를 건너뜁니다. - 에이전트에게 다음과 같은 라우팅 규칙을 줄 수 있습니다. "
GET https://api.everyinfra.com/api/v1/social/catalog에 있는 플랫폼은everyinfra_call_api로 처리하세요. 그 밖의 모든 플랫폼과 도구는 Monid를 거치세요. discover, inspect 순으로 진행하고, 가격이 예산 범위 안일 때만 run을 실행하세요. 모든 호출의 과금액을 기록하세요." - Monid의 MCP 서버(
https://mcp.monid.ai/v1)는 브라우저에서 OAuth 로그인이 필요하며, 저희는 이를 테스트하지 않았습니다. Claude, Claude Code, Codex, OpenCode, ChatGPT 설정 방법은 [Monid MCP 빠른 시작](https://monid.ai/docs/guide/quickstart-mcp)에 나와 있습니다. EveryInfra 쪽 설정은 위의 MCP 섹션을 참고하세요.
EveryInfra와 Monid는 파트너입니다. 아래 "Monid 방문하기" 링크는 추천 코드가 없는 일반 링크입니다.
Monid 방문하기 (새 창에서 열림)Monid 제품과 과금 방식은 파트너 페이지에서 확인할 수 있습니다.
과금과 잔액 조정 이해하기
필요한 기능의 가격과 과금 단위는 공개 카탈로그에서 확인하세요. 각 응답에는 과금된 금액이 기록됩니다. 성공적으로 전달된 경우에만 과금되는 제품은 실패하거나 결과가 비어 있으면 과금되지 않습니다.
- 클라이언트에서 내부 지갑 단위를 통화로 환산하지 마세요.
- API가 반환한 통화와 금액을 그대로 표시하고, 과금 내역 대조에 사용하세요.
- 전달 기반 작업이 완료되지 않으면 최종 과금이 남지 않으며, 보류된 금액은 자동으로 계정 잔액에 반환됩니다.
- 유료 응답의
billing객체에는 해당 호출에 과금된 USD 금액인charged_usd(과금되지 않으면 0, 결과가 아직 확정되지 않았으면 null)와 호출 정산 후 지갑 잔액인balance_after_usd(조회할 수 없으면 null)가 포함됩니다. 일괄 작업 중에는 계정을 폴링하지 말고balance_after_usd를 확인하세요. - 실패한 호출의 보류 금액이 반환되면 오류 본문의
billing에도balance_after_usd가 포함됩니다.
오류 처리
HTTP 상태와 오류 본문을 함께 확인합니다. 모든 오류에는 문제의 원인이 어느 쪽에 있는지와 다음 조치도 함께 담깁니다: fault(request, account, service), retryable, next_steps. 문제가 EveryInfra 측에 있고 재시도 횟수를 모두 소진한 경우 support에 티켓 초안이 담깁니다. 티켓을 열어도 되는지 사용자에게 먼저 확인합니다. 재시도하기 전에는 무엇이 실패했는지, 요청을 반복하면 액션이 중복 실행될 수 있는지 확인합니다.
| 상태 | 의미 | 조치 |
|---|---|---|
| 400 | 알 수 없는 플랫폼 또는 액션 | 응답의 did_you_mean과 allowed 또는 기능 카탈로그를 참고합니다. |
| 401 | API 키가 없거나 유효하지 않거나 비활성화됨 | Bearer 토큰과 키 상태를 확인합니다. |
| 402 | 지갑 잔액 부족 | GET /api/v1/account로 현재 잔액을 확인한 뒤 계정에 충전하거나 요청 범위를 줄입니다. |
| 404 | 알 수 없는 경로 또는 리소스 | 엔드포인트와 리소스 식별자를 확인합니다. |
| 422 | 유효하지 않은 파라미터, 값 또는 타입 | 응답에서 지원되는 값과 did_you_mean을 확인합니다. |
| 429 | 요청 속도 제한 도달 | Retry-After에 지정된 시간만큼 기다린 뒤 재시도합니다. 제한은 계정 단위로 적용되며 모든 API 키의 요청이 합산됩니다. 키별로 더 낮은 제한을 따로 둘 수도 있습니다. |
| 5xx | 요청을 전달하지 못함 | 요청 ID를 기록하고 next_steps를 따릅니다. 시간 초과(timeout)인 경우 같은 요청에 "mode":"async"를 넣어 다시 보내면 기다리지 않고 job_id를 받을 수 있습니다. |
카탈로그 엔드포인트에 API 키가 필요한가요?
아니요. 공개 기능 카탈로그는 가입 전에도 조회할 수 있습니다. 인증이 필요한 호출에는 여전히 유효한 Bearer API 키가 필요합니다.
데이터는 어디서 가져오며, 각 플랫폼의 허가를 받았나요?
EveryInfra는 공개 게시물, 댓글, 상품 페이지, 프로필 등 각 플랫폼에서 공개적으로 볼 수 있는 콘텐츠를 반환합니다. 플랫폼에 개발자 앱을 등록하거나 플랫폼 계정으로 로그인할 필요가 없습니다. EveryInfra는 이들 플랫폼의 파트너가 아니며, 플랫폼을 대리하지 않고, 고객을 대신해 플랫폼의 허가를 받지도 않습니다. 데이터를 어떻게 사용할지는 고객이 결정합니다. 사용 방식이 관련 법률과 해당 플랫폼의 약관을 준수하는지 확인해야 합니다([서비스 약관](/ko/terms) 제1조 및 제4조 참조). 공개적으로 볼 수 있다고 해서 자유롭게 복제하거나 재게시하거나 상업적으로 이용할 수 있는 것은 아닙니다.
MCP와 REST는 별개의 제품인가요?
아니요. MCP는 현재 탐색된 EveryInfra 도구에 접근하는 또 다른 방법입니다. 데이터, 검색, CAPTCHA, AI 채팅은 해당 REST의 인증, 과금, 검증, 요청 속도 제한, 잔액 조정 규칙을 그대로 따릅니다.
AI API는 무료인가요?
네. 충전한 적이 있는 계정이라면 잔액을 쓰지 않고 호출할 수 있습니다. 제한은 누적 충전액에 따라 정해집니다: $100 미만은 분당 50건, 동시 최대 5건; $100부터는 각각 500건, 50건; $500부터는 각각 5,000건, 500건. 크레딧 코드와 보너스 크레딧은 각각 금액이 $1를 초과하면 누적 충전액에 포함되지만, 체험용 크레딧과 $1 이하 금액은 포함되지 않습니다.
코드에서 잔액을 확인하려면 어떻게 하나요?
같은 Bearer API 키로 GET /api/v1/account를 호출합니다. 유료 잔액, 보너스 잔액, 총잔액(USD), 이번 달 충전 할인, 분당 요청 제한, 최근 24시간 사용량을 반환하며, 과금되지 않고 제한에도 포함되지 않습니다. 모든 유료 응답에는 billing.balance_after_usd도 포함됩니다.
지원하지 않는 파라미터는 무시되나요?
아니요. 알 수 없는 파라미터를 보내면 422를 반환하며, 지원되는 값과 함께 판단 가능한 경우 가장 가까운 이름을 제안합니다.
대량의 요청은 어떻게 보내야 하나요?
비동기 모드를 사용합니다. 요청 본문에 "mode": "async"를 추가하면 각 호출이 즉시 job_id를 반환하며, GET /api/v1/jobs/{job_id}를 폴링해 결과를 받습니다. 동기 호출은 85 초 안에 완료되지 않으면 시간 초과로 실패하며(과금 없음), 비동기 작업에는 이 제한이 적용되지 않습니다.