# China A-Share Unlock Calendar — Lockup Expiry Tracker (`nexgendata/china-a-share-unlock-calendar`) Actor

Track upcoming Chinese A-share share unlocks (限售解禁): unlock date, shares & market cap unlocking, share type, free-float %, price move 20d before/after. Eastmoney data, no login.

- **URL**: https://apify.com/nexgendata/china-a-share-unlock-calendar.md
- **Developed by:** [NexGenData](https://apify.com/nexgendata) (community)
- **Categories:** AI, Developer tools
- **Stats:** 9 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $10.00 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## China A-Share Unlock Calendar — Lockup Expiry Tracker

Track **upcoming share unlocks (限售解禁) across the entire Chinese A-share market** in one run. When a company's previously locked-up shares become freely tradable, it's a major supply event that can move the stock — and this Actor gives you the full calendar as clean, structured rows: the unlock date, how many shares and how much market cap unlock, the share type, what fraction of the company it represents, and the stock's price move 20 days before and after.

If you trade, research, or monitor Chinese equities, lockup expiries are one of the most-watched event catalysts — and there's almost no clean, structured way to pull them. **No login, no account, no API key.**

### Why lockup expiries matter

Pre-IPO investors, private-placement participants and insiders hold shares under lockup. When that lockup expires, a large block of stock can suddenly hit the market — often pressuring the price. Funds track the calendar to avoid (or trade) the supply overhang. This Actor turns Eastmoney's unlock data into a filterable feed you can drop into a spreadsheet, dashboard or model.

### What you get

One row per unlock event:

| Field | Description |
|---|---|
| `unlockDate` | Date the shares become tradable |
| `stockCode` / `secuCode` | 6-digit code and full code with exchange suffix |
| `stockName` | Company short name |
| `market` | SSE / SZSE / BSE |
| `sharesUnlocked` | Number of shares unlocking (absolute) |
| `unlockMarketCapCny` | Market cap of the unlocking shares, in CNY |
| `shareType` / `shareTypeEn` | Lockup type (IPO lockup, private placement, equity incentive, …) — Chinese and English |
| `pctOfPreUnlockFloat` | Unlock as % of pre-unlock free float |
| `pctOfTotalShares` | Unlock as % of total shares outstanding |
| `holdersUnlocking` | Number of holders in this unlock batch |
| `currentPrice` | Latest stock price (CNY) |
| `priceChangePct20dBefore` | Stock's return in the 20 trading days before the unlock |
| `priceChangePct20dAfter` | Return in the 20 days after (0/empty for future unlocks) |

### Input

- **From date** (`startDate`) — earliest unlock date (YYYY-MM-DD). Blank = today, i.e. upcoming unlocks.
- **To date** (`endDate`) — latest unlock date. Blank = open-ended.
- **Stock codes** (`securityCodes`) — restrict to specific tickers, or leave empty for the whole market.
- **Min unlock market cap** (`minUnlockMarketCapCny`) — only big events (e.g. 1000000000 for ¥1B+).
- **Include NEEQ** (`includeNEEQ`) — off by default; A-shares only.
- **Max events** (`maxResults`).

#### Example input

```json
{
  "startDate": "2026-06-24",
  "endDate": "2026-09-30",
  "minUnlockMarketCapCny": 1000000000
}
````

#### Example output row

```json
{
  "unlockDate": "2026-06-24",
  "stockCode": "603236",
  "stockName": "移远通信",
  "market": "SSE",
  "sharesUnlocked": 36632071,
  "unlockMarketCapCny": 1790941951,
  "shareTypeEn": "Private placement (institutional)",
  "pctOfTotalShares": 9.09,
  "currentPrice": 48.89,
  "priceChangePct20dBefore": -10.42
}
```

### Use cases

- **Event calendar** — pull the next N months of unlocks and flag the big ones (`minUnlockMarketCapCny`).
- **Supply-overhang screening** — sort by `pctOfTotalShares` to find the most dilutive expiries.
- **Single-name monitoring** — set `securityCodes` to watch lockups on stocks you hold.
- **Post-event studies** — pull past unlocks and use `priceChangePct20dBefore/After` to study price impact.
- **Risk dashboards** — feed upcoming unlocks into your own app or BI tool.

### Tips

- Run it on a **schedule** (e.g. weekly) with a forward `endDate` to keep a rolling unlock calendar.
- Use `minUnlockMarketCapCny` to cut to the events large enough to actually move a stock.
- `priceChangePct20dBefore` often weakens ahead of a large unlock — a useful pre-positioning signal.

### FAQ

**Account or API key needed?** No — data is pulled live from Eastmoney's public dataset.

**Which markets?** All A-shares: Shanghai & Shenzhen main boards, STAR Market, ChiNext and the Beijing Stock Exchange. NEEQ optional.

**How current?** As fresh as Eastmoney; upcoming unlocks are known well in advance.

**Currency / units?** CNY; share counts are absolute (already converted from Eastmoney's 万 units).

### Related Actors by NexGenData

- \[eastmoney-china-stock-screener]\(https://apify.com/nexgendata/Eastmoney China Stock Screener?fpr=2ayu9b)
- \[star-market-china-stock-screener]\(https://apify.com/nexgendata/STAR Market China Stock Screener?fpr=2ayu9b)
- \[chinext-china-stock-screener]\(https://apify.com/nexgendata/Chinext China Stock Screener?fpr=2ayu9b)
- \[china-stock-connect-flow]\(https://apify.com/nexgendata/China Stock Connect Flow?fpr=2ayu9b)
- \[china-block-trades-tracker]\(https://apify.com/nexgendata/China Block Trades Tracker?fpr=2ayu9b)

Part of a China market-intelligence suite:

- **China A-Share Earnings Calendar** — upcoming results announcement dates.
- **China A-Share Financials** — per-company revenue, profit, EPS, ROE.
- **China A-Share Insider Trades**, **Block Trades**, **Dragon-Tiger List**, **Stock Connect Flow** — the rest of the China event/flow stack.

# Actor input Schema

## `startDate` (type: `string`):

Earliest unlock date, YYYY-MM-DD. Leave blank for today (upcoming unlocks).

## `endDate` (type: `string`):

Latest unlock date, YYYY-MM-DD. Leave blank for open-ended (all future unlocks).

## `securityCodes` (type: `array`):

Restrict to specific 6-digit A-share codes (e.g. 600519, 300750). Empty = whole market.

## `minUnlockMarketCapCny` (type: `integer`):

Only return unlocks whose market cap is at least this many CNY (e.g. 1000000000 for ¥1B+ events). 0 = no filter.

## `includeNEEQ` (type: `boolean`):

Include lower-tier 新三板 companies. Off by default — A-shares only (main-board / STAR / ChiNext / BSE).

## `maxResults` (type: `integer`):

Maximum unlock events to return.

## Actor input object example

```json
{
  "startDate": "2026-06-24",
  "endDate": "2026-12-31",
  "securityCodes": [
    "600519",
    "300750"
  ],
  "minUnlockMarketCapCny": 0,
  "includeNEEQ": false,
  "maxResults": 500
}
```

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {};

// Run the Actor and wait for it to finish
const run = await client.actor("nexgendata/china-a-share-unlock-calendar").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {}

# Run the Actor and wait for it to finish
run = client.actor("nexgendata/china-a-share-unlock-calendar").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{}' |
apify call nexgendata/china-a-share-unlock-calendar --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=nexgendata/china-a-share-unlock-calendar",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "China A-Share Unlock Calendar — Lockup Expiry Tracker",
        "description": "Track upcoming Chinese A-share share unlocks (限售解禁): unlock date, shares & market cap unlocking, share type, free-float %, price move 20d before/after. Eastmoney data, no login.",
        "version": "0.0",
        "x-build-id": "WVsqPSyMOIrVLinuc"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/nexgendata~china-a-share-unlock-calendar/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-nexgendata-china-a-share-unlock-calendar",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/nexgendata~china-a-share-unlock-calendar/runs": {
            "post": {
                "operationId": "runs-sync-nexgendata-china-a-share-unlock-calendar",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/nexgendata~china-a-share-unlock-calendar/run-sync": {
            "post": {
                "operationId": "run-sync-nexgendata-china-a-share-unlock-calendar",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "startDate": {
                        "title": "From date (unlock on/after)",
                        "type": "string",
                        "description": "Earliest unlock date, YYYY-MM-DD. Leave blank for today (upcoming unlocks)."
                    },
                    "endDate": {
                        "title": "To date (unlock on/before)",
                        "type": "string",
                        "description": "Latest unlock date, YYYY-MM-DD. Leave blank for open-ended (all future unlocks)."
                    },
                    "securityCodes": {
                        "title": "Stock codes (optional)",
                        "type": "array",
                        "description": "Restrict to specific 6-digit A-share codes (e.g. 600519, 300750). Empty = whole market.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "minUnlockMarketCapCny": {
                        "title": "Min unlock market cap (CNY)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Only return unlocks whose market cap is at least this many CNY (e.g. 1000000000 for ¥1B+ events). 0 = no filter.",
                        "default": 0
                    },
                    "includeNEEQ": {
                        "title": "Include NEEQ (新三板)",
                        "type": "boolean",
                        "description": "Include lower-tier 新三板 companies. Off by default — A-shares only (main-board / STAR / ChiNext / BSE).",
                        "default": false
                    },
                    "maxResults": {
                        "title": "Max events",
                        "minimum": 1,
                        "maximum": 6000,
                        "type": "integer",
                        "description": "Maximum unlock events to return.",
                        "default": 500
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
