Token导航 LogoToken导航TokenDH.com
研究检索操作浏览器clawhub未标认证来源可访问clear审计通过

divar-apidivar API 搜索

Agent Skill

用于辅助 API 设计、接口文档、请求响应结构和服务集成说明。它适合让 Agent 梳理 endpoint、生成 OpenAPI 草稿、检查字段命名、整理错误码或辅助前后端联调。使用时需要确认真实业务语义、鉴权方式、分页和错误处理规则;涉及生成接口文档时,应避免凭空补字段,最好从现有代码、schema 或接口样例中提取事实。

总安装

3,189

周安装

129

GitHub Stars

公开资料未说明

下载量

1,001
OpenClaw

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

GitHub

来源数

2

许可证

MIT-0

最后核验

2026-05-01

来源状态

来源可访问

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:divar-api(divar API 搜索)
来源仓库:https://github.com/hadifarnoud/divar-api
安装命令:
openclaw skills install divar-api
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 OpenClaw 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

ClawHubOpenClaw
openclaw skills install divar-api

简介

用于从伊朗分类平台 Divar 搜索和提取数据。

  • 适合需要查询本地服务或房产信息的场景。
  • 通过 clawhub 安装,命令为 openclaw skills install divar-api。
  • 使用前请确认接口鉴权方式和分页规则,避免生成虚构字段。
  • divar-api 属于研究检索类 Skill,可作为该场景下的辅助能力补充。

SKILL.md

name
divar-api
description
>

Divar API Skill

Divar uses a server-driven widget API (JSON over HTTPS, protobuf type annotations embedded via @type). All responses are lists of typed widget_type objects. Base URL: https://api.divar.ir.

Critical: form_data field types

Every filter field uses a typed wrapper. Wrong type = HTTP 400. Use this table exactly:

FieldWrapperExample
categorystr{ "str": { "value": "residential-rent" } }
sortstr{ "str": { "value": "sort_date" } }
districtsrepeated_string{ "repeated_string": { "value": ["920", "82"] } }
roomsrepeated_string{ "repeated_string": { "value": ["یک", "دو"] } }
rentnumber_range{ "number_range": { "minimum": "20000000", "maximum": "60000000" } }
creditnumber_range{ "number_range": { "minimum": "300000000", "maximum": "600000000" } }
sizenumber_range{ "number_range": { "minimum": "80", "maximum": "120" } }
balconyboolean{ "boolean": { "value": true } }
parkingboolean{ "boolean": { "value": true } }
number_range min/max values are strings, not numbers. boolean value is a JS boolean (true/false), not a string.

Critical: category slugs

The API slug differs from the divar.ir URL path segment. Never use the URL segment as the slug.

API slug (category.str.value)URL pathPersian
residential-rentrent-residentialاجاره مسکونی
apartment-sellapartment-sellفروش آپارتمان
apartment-rentrent-apartmentاجاره آپارتمان
buy-residentialbuy-residentialفروش مسکونی
real-estatereal-estateهمه ملک
buy-commercial-propertybuy-commercial-propertyفروش اداری/تجاری
rent-commercial-propertyrent-commercial-propertyاجاره اداری/تجاری
rent-temporaryrent-temporaryاجاره کوتاه‌مدت

When in doubt, intercept a real browser request via DevTools to read the actual category.str.value.

Search endpoint

POST /v8/postlist/w/search

Verified working payload (residential rental, Tehran, tested 2026-04-01 → returned 24 listings):

{
  "city_ids": ["1"],
  "source_view": "SEARCH",
  "disable_recommendation": false,
  "search_data": {
    "form_data": {
      "data": {
        "category":  { "str":            { "value": "residential-rent" } },
        "districts": { "repeated_string": { "value": ["139","143","145","4162","75","78","82","920","921"] } },
        "rooms":     { "repeated_string": { "value": ["دو","یک"] } },
        "rent":      { "number_range":   { "minimum": "20000000",  "maximum": "60000000"  } },
        "credit":    { "number_range":   { "minimum": "300000000", "maximum": "600000000" } },
        "size":      { "number_range":   { "minimum": "80",        "maximum": "120"       } },
        "balcony":   { "boolean":        { "value": true } },
        "parking":   { "boolean":        { "value": true } }
      }
    },
    "server_payload": {
      "@type": "type.googleapis.com/widgets.SearchData.ServerPayload",
      "additional_form_data": {
        "data": { "sort": { "str": { "value": "sort_date" } } }
      }
    }
  }
}

Response: { "list_top_widgets": [...], "list_widgets": [...] }

Filter to widget_type === "POST_ROW" to get listings. Each POST_ROW has:

  • data.title — listing title (Persian)
  • data.middle_description_text — price string
  • data.bottom_description_text — relative time ("دقایقی پیش")
  • data.action.payload.token — unique post ID (use for detail/contact endpoints)
  • data.action.payload.web_info.district_persian — district name
  • data.image_count — number of photos

Pagination

Cursor-based. On page 1, no pagination_data. On page 2+, add:

{
  "pagination_data": {
    "@type": "type.googleapis.com/post_list.PaginationData",
    "last_post_date": "<ISO8601 from previous last post>",
    "page": 2,
    "layer_page": 2,
    "search_uid": "<uuid — keep constant for the session>",
    "cumulative_widgets_count": 24
  }
}

viewed_tokens is an optional gzip+base64 bloom filter for server-side deduplication — safe to omit.

Post detail

GET /v8/posts-v2/web/{token}

Returns sections (BREADCRUMB, HEADER, IMAGES, DETAILS) each containing widget arrays. Common detail widget types: KEY_VALUE (room count, floor, etc.), DESCRIPTION, IMAGE_GALLERY, MAP.

Contact info (requires auth)

POST /v8/postcontact/web/contact_info_v2/{token}

Body: {}. Returns widget_list with UNEXPANDABLE_ROW containing phone number. Returns RBAC: access denied without authentication.

Authentication

  • Cookie-based: token cookie + did (device ID) cookie, set by divar.ir on login.
  • Header: Authorization: Basic <jwt> — same JWT value as the token cookie.
  • The search endpoint works with session cookies alone when called same-origin from divar.ir.
  • Cross-origin calls (e.g. from a script) need the Authorization header explicitly.

Parsing a divar.ir search URL → API payload

When a user pastes a URL like: https://divar.ir/s/tehran/rent-residential/almahdi?balcony=true&credit=300000000-600000000&districts=920%2C82&rent=20000000-60000000&rooms=%D8%AF%D9%88%2C%DB%8C%DA%A9&size=80-120

Map query params to form_data fields:

URL paramform_data fieldWrapper
URL path segment (e.g. rent-residential)category → look up API slugstr
districts=920,82,...districtsrepeated_string (split on ,)
rooms=دو,یکroomsrepeated_string (split on ,)
rent=min-maxrentnumber_range (split on -)
credit=min-maxcreditnumber_range (split on -)
size=min-maxsizenumber_range (split on -)
balcony=truebalconyboolean
parking=trueparkingboolean
map_bbox=...not in form_data — belongs in /v8/mapview/viewport camera_info.bbox
map_place_hash=...not in form_data

For full API reference (all endpoints, widget system, map/geo, autocomplete, filters): → read references/api-reference.md

适合场景

01

OpenClaw 用户查找和安装 Skill 时

02

用户想查找某类 Agent Skill 时

03

需要根据任务场景推荐可安装能力包时

04

需要对比不同来源的安装命令和来源信息时

能力概览

能力 1

按任务关键词查找相关 Skills

能力 2

展示可复制的安装命令

能力 3

保留来源站点、仓库和原始说明,方便继续核验

能力 4

补充不同宿主或平台的使用分布数据

能力 5

展示第三方安全扫描或审计结果

安装后应在对应宿主中按原始 README 的触发条件使用;具体调用方式请以来源页面和 README 为准。

平台分布

OpenClaw

89.98%
按下载量换算901

安全审计

VirusTotal

通过

ClawScan

通过

Static analysis

通过

权限和风险

操作浏览器

该 Skill 可能涉及浏览器控制能力,使用时可能读取或操作网页内容,需要在受控环境中确认权限边界。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。当前只有一个来源,正式发布前建议补源仓库或其他目录站核验。

来源信息

继续浏览同类 Skills