szggzy APIszggzy.com ↗
Access Shenzhen public procurement and trading announcements via API. List, search, and retrieve winning bid details including party names and amounts.
What is the szggzy API?
The szggzy.com API provides access to public procurement and trading result announcements published on Shenzhen's government trading portal, covering three endpoints that expose listing, search, and detail retrieval. The get_announcement_detail endpoint returns parsed winning party names and bid amounts in yuan, alongside project codes and publication timestamps — data that would otherwise require manual parsing of individual announcement pages.
curl -X GET 'https://api.parse.bot/scraper/527e0919-28cb-4f67-8cf7-8e8cd6242550/list_results_announcements?page=0&limit=5&category_id=2850' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace szggzy-com-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Walkthrough: Shenzhen Public Resources Trading Center — search and inspect procurement announcements."""
from parse_apis.shenzhen_public_resources_trading_center_api import (
Szggzy,
AnnouncementNotFound,
CategoryId,
)
client = Szggzy()
# List recent government procurement result announcements (capped iteration).
for item in client.announcementsummaries.list(category_id=CategoryId._2850, limit=3):
print(item.title, item.publish_time, item.area_name)
# Search announcements by keyword, take one result.
result = client.announcementsummaries.search(query="医疗", limit=1).first()
if result:
print(result.title, result.project_code, result.trade_type)
# Drill into the full detail via the summary's navigation op.
detail = result.details()
print(detail.title, detail.winning_amount, detail.winning_party)
# Direct lookup by content_id with typed error handling.
try:
ann = client.announcements.get(content_id=str(result.content_id)) if result else client.announcements.get(content_id="20449825")
print(ann.project_name, ann.project_number, ann.source)
except AnnouncementNotFound as exc:
print(f"Announcement not found: {exc.content_id}")
print("exercised: announcementsummaries.list / .search / .details / announcements.get")
List trading result announcements (中标/成交结果公告) with pagination and category filtering. Returns paginated results sorted by publish time descending. Each page returns up to `limit` announcement summaries. The total result count is capped at 1000 by the upstream system.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number (0-indexed) |
| limit | integer | Number of items per page |
| query | string | Optional keyword search within results |
| category_id | integer | Category ID (e.g., 2850 for Government Procurement/政府采购) |
{
"type": "object",
"fields": {
"content": "array of announcement summary objects with contentId, noticeTitle, publishTime, projectCode, projectName, areaName, classifyType, tradeType",
"totalPages": "integer total number of pages",
"totalElements": "integer total number of matching announcements"
},
"sample": {
"data": {
"content": [
{
"areaName": "市本级",
"contentId": 20449825,
"tradeType": "集中采购",
"noticeTitle": "2026年深圳市文体旅智慧服务平台运行维护项目的采购结果公告",
"projectCode": "JYCG-DECL-2026-23105",
"projectName": "2026年深圳市文体旅智慧服务平台运行维护项目",
"publishTime": "2026-06-11 12:08:18",
"classifyType": "政府采购"
}
],
"totalPages": 200,
"totalElements": 1000
},
"status": "success"
}
}About the szggzy API
Listing and Searching Announcements
The list_results_announcements endpoint returns paginated summaries of 中标/成交结果公告 (winning bid and transaction result notices), sorted by publish time descending. Each item in the content array includes contentId, noticeTitle, publishTime, projectCode, projectName, and areaName. Pagination is controlled via zero-indexed page and limit parameters, and the response includes totalPages and totalElements for cursor management. Filtering by procurement category is supported through the category_id parameter — for example, 2850 targets Government Procurement (政府采购).
The search_announcements endpoint accepts a required query keyword and returns matching announcements ranked by relevance. It shares the same response shape as the list endpoint, so the same contentId values can be passed downstream to the detail endpoint. An optional category_id parameter narrows results to a specific category.
Announcement Detail and Bid Extraction
Passing a content_id (the numeric string from contentId in list or search results) to get_announcement_detail returns the full announcement record. The response includes structured metadata in the attributes object, a release_time timestamp, and — where parseable — winning_party (the name of the awarded bidder or supplier) and winning_amount (the contract value in yuan as a string). Both fields return null when the underlying announcement does not contain extractable values, so callers should handle nulls in their pipeline. The project_name and project_number fields provide cross-reference identifiers consistent with the summary-level fields.
Coverage and Data Scope
All data originates from szggzy.com, the public trading platform serving Shenzhen-area procurement activity. Announcements span government procurement and other trading categories accessible through the portal's category taxonomy. The API does not require any end-user authentication to retrieve public announcement data. Category IDs beyond 2850 exist but are not enumerated in the current endpoint spec; passing known IDs to category_id will filter correctly if they are valid on the source platform.
The szggzy API is a managed, monitored endpoint for szggzy.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when szggzy.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official szggzy.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Monitor newly published winning bid announcements in Shenzhen government procurement by polling
list_results_announcementswithcategory_id=2850. - Extract supplier award histories by searching a company name via
search_announcementsand collectingwinning_partyfields from detail calls. - Aggregate
winning_amountvalues across a date range to analyze procurement spending patterns in a specific category. - Build a project tracking dashboard using
projectCodeandprojectNamefrom listing results linked to full detail records. - Alert on new contract awards matching a keyword (e.g., a product type or technology term) using the
queryparameter insearch_announcements. - Compile a dataset of awarded contracts with party names and amounts for competitive intelligence or market research.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does szggzy.com offer an official developer API?+
What does get_announcement_detail return beyond what the list endpoints provide?+
winning_party, winning_amount, a full attributes metadata object, and the complete title — fields not present in the summary objects returned by list_results_announcements or search_announcements. The list and search endpoints return only summary fields: contentId, noticeTitle, publishTime, projectCode, projectName, areaName, and cl.Are winning_party and winning_amount always populated?+
null when the announcement does not contain data in a format the detail endpoint can extract. This can occur for certain announcement types or older records where the structured bid information is absent or formatted unusually. Callers should treat both fields as nullable.