当汽车从钢铁机械进化为"可移动的智能终端",线下体验空间的意义也随之重构。对极氪而言,门店早已不是传统意义上的销售场所,而是连接人、车与数字生活的未来出行实验室。在这里,用户触摸的不仅是001流畅的猎装曲线或009静谧的豪华座舱,更是极氪所倡导的"极致、智能、可持续"生活方式本身------通过沉浸式场景交互,用户能直观感受浩瀚SEA架构带来的全域进化能力、ZEEKR OS如何实现无缝生态流转、以及800V超快充如何将补能焦虑转化为效率自由。极氪正以"科技平权"的姿态,将高阶智能电动体验从参数表中解放出来,转化为可感知、可参与、可共创的真实生活片段。
这种以用户为中心的体验革命,让每一家极氪门店都成为智慧出行生态中的活态数据节点。无论是位于城市地标商圈的极氪中心,还是深入社区的极氪空间,都在持续生成关于用户行为偏好、场景使用深度、服务响应效率及区域市场热度的动态信息流。这些数据若仅停留在局部运营层面,其价值将被严重低估;唯有通过标准化、自动化的采集机制,将其转化为结构化的地理与业务资产,才能真正激活其战略潜能------支撑网络布局的科学评估、服务半径的精准测算、资源投放的动态优化,乃至未来"车-桩-站-店"一体化生态的智能协同。这不仅是渠道管理的升级,更是极氪构建"以数据驱动用户体验进化"闭环的关键一步。
本文旨在通过程序化方式,调用极氪官方公开接口,自动化采集全国极氪门店的结构化数据。利用 Python 的 requests 库发起标准 HTTP POST 请求,可高效获取包含门店名称、所属省市区、详细地址、高德经纬度坐标、营业时间、等字段的 JSON 响应。通过对这些数据的整合与地理可视化,我们不仅能清晰描绘极氪当前"以用户为中心、数字化驱动、场景化落地"的线下服务网络布局密度与城市渗透策略,还可为潜在网点选址、用户就近试驾/交付匹配、区域营销资源精准投放、绿色出行生态协同(如与换电/超充网络联动)提供可量化的决策依据------这正是"用数据理解极氪智慧出行生态"的一次实践,也深刻呼应了极氪"平等、多元、可持续的未来出行"与"科技为人,驾驭愉悦"的品牌使命
极氪官方门店查询入口:极氪官网

首先,我们找到门店数据的存储位置,然后看3个关键部分标头、 负载、 预览;
**标头:**通常包括URL的连接,也就是目标资源的位置;

**负载:**对于POST请求:负载通常包含了传递的参数,因为所有参数都通过URL传递,这里我们可以看到查询城市citycode,页码page等信息,负载整体内容没有进行加密;

**预览:**指的是对响应内容的快速查看或摘要显示,可以帮助用户快速了解返回的数据结构或内容片段,我们可以看到数据在data里;

根据页面测试,我们可以知道,只要查询到市级行政区就可以查询到该层级的所有门店数据,而且从标头可以知道,数据是通过市级行政区编码进行查询的,所以我们先找到所有省市县的行政区编码响应内容,并把它另存为到本地,即可通过这张表来访问全国极氪门店数据;

第一步:利用requests库发送HTTP请求获取所有市级城市名称及编码表,并根据标签进行保存,另存为csv;
完整代码#运行环境 Python 3.11
python
import requests
import json
import csv
def save_cities_to_csv():
url = "https://zeekrlife-oss.zeekrlife.com/frontend/zeekrlifeWechat/common/area.json?time=1764733711854"
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0 Safari/537.36",
"Referer": "https://www.zeekrlife.com/"
}
try:
print("正在请求 area.json 数据...")
response = requests.get(url, headers=headers, timeout=10)
response.raise_for_status()
data = response.json()
# 检查接口是否成功
if not data.get("success"):
print("接口返回失败")
return
provinces = data.get("regionAddressJsonDTO", [])
cities_data = []
for province in provinces:
province_name = province["name"]
province_code = province["code"]
city_list = province.get("cityList", [])
# 如果 cityList 为空(比如某些特殊地区),跳过
if not city_list:
# 有些可能是直筒子市(如东莞、中山),但此处按常规处理
continue
for city in city_list:
city_name = city["name"]
city_code = city["code"]
cities_data.append({
"province": province_name,
"city_name": city_name,
"city_code": city_code
})
# 保存到 CSV
output_file = "china_cities.csv"
with open(output_file, "w", encoding="utf-8-sig", newline="") as f: # utf-8-sig 支持 Excel 正确显示中文
writer = csv.DictWriter(f, fieldnames=["province", "city_name", "city_code"])
writer.writeheader()
writer.writerows(cities_data)
print(f"成功提取 {len(cities_data)} 个市级行政区,已保存至 {output_file}")
except Exception as e:
print(f"发生错误: {e}")
if __name__ == '__main__':
save_cities_to_csv()
数据会以csv表格的形式,保存在运行脚本的目录下,数据标签包括:province(省名称)、city_name(市名称)、city_code(市编码);

我们得到了所有370个市级行政区编码列表之后,我们就可以通过遍历列表里面的城市数据,进而获取全国的门店信息;
**第二步:**利用requests库发送HTTP请求遍历370个城市编码,并获取所有极氪门店数据,并根据标签进行保存,另存为csv;
完整代码#运行环境 Python 3.11
python
import requests
import json
import csv
import os
import time
from datetime import datetime
# 工具函数:时间戳转日期
def timestamp_to_date(ts):
if not ts:
return ""
try:
return datetime.fromtimestamp(int(ts) / 1000).strftime("%Y-%m-%d")
except (ValueError, OSError, TypeError):
return ""
# 获取单个城市门店数据
def fetch_stores_by_city_code(city_code, timeout=10):
url = "https://api-gw-toc.zeekrlife.com/zeekrlife-agg-comm-mssc-basic/open/apply/store/toc/common/nearby/shop/page"
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0 Safari/537.36",
"Content-Type": "application/json",
"Referer": "https://www.zeekrlife.com/",
"Origin": "https://www.zeekrlife.com"
}
payload = {
"longitude": None,
"latitude": None,
"cityCode": city_code,
"storeType": 0,
"vehicleModel": None,
"pageNum": 1,
"pageSize": 9999
}
try:
response = requests.post(url, headers=headers, json=payload, timeout=timeout)
if response.status_code != 200:
print(f"城市 {city_code} 请求失败,状态码: {response.status_code}")
return []
data = response.json()
if not data.get("success"):
msg = data.get("msg", "未知错误")
print(f"城市 {city_code} API 返回失败: {msg}")
return []
# 安全获取 data 字段,防止 data 为 null
raw_data = data.get("data")
if raw_data is None:
print(f"城市 {city_code} 没有门店数据")
return []
stores = raw_data.get("allTypeDTOS") or [] # 如果字段不存在或为 null,视为空列表
if not stores:
print(f"城市 {city_code} 没有门店数据")
else:
print(f"城市 {city_code} 获取到 {len(stores)} 个门店")
return stores
except Exception as e:
print(f"城市 {city_code} 请求异常: {e}")
return []
# 主函数:遍历城市 + 汇总保存
def main():
input_file = "china_cities.csv" # 输入城市列表
output_file = "zeekr_all_stores.csv" # 输出门店汇总
if not os.path.exists(input_file):
print(f"找不到城市文件: {input_file}")
return
# 读取所有 city_code
city_codes = []
with open(input_file, mode='r', encoding='utf-8') as f:
reader = csv.DictReader(f)
for row in reader:
code = row.get('city_code') or row.get('cityCode') or row.get('code')
if code and code.strip():
city_codes.append(code.strip())
if not city_codes:
print("未从文件中读取到任何 city_code")
return
print(f"共读取 {len(city_codes)} 个城市,开始抓取...")
# 定义输出字段
fieldnames = [
"storeFacilitiesId",
"longitude",
"latitude",
"cityName",
"zeekrCoordinateName",
"province",
"city",
"district",
"provinceCode",
"cityCode",
"districtCode",
"roadShowDailyOpeningStartTime",
"roadShowDailyOpeningEndTime",
"roadShowStartDate",
"shopAddress"
]
total_count = 0
with open(output_file, mode='w', encoding='utf-8-sig', newline='') as f_out:
writer = csv.DictWriter(f_out, fieldnames=fieldnames)
writer.writeheader()
for i, city_code in enumerate(city_codes, 1):
print(f"[{i}/{len(city_codes)}] 正在处理城市: {city_code}")
stores = fetch_stores_by_city_code(city_code)
for store in stores:
gaode_coord = store.get("gaodeCoordinate")
lon, lat = None, None
if gaode_coord and ',' in gaode_coord:
parts = gaode_coord.split(',', 1)
lon, lat = parts[0].strip(), parts[1].strip()
row = {
"storeFacilitiesId": store.get("storeFacilitiesId"),
"longitude": lon,
"latitude": lat,
"cityName": store.get("cityName"),
"zeekrCoordinateName": store.get("zeekrCoordinateName"),
"province": store.get("province"),
"city": store.get("city"),
"district": store.get("district"),
"provinceCode": store.get("provinceCode"),
"cityCode": store.get("cityCode"),
"districtCode": store.get("districtCode"),
"roadShowDailyOpeningStartTime": store.get("roadShowDailyOpeningStartTime"),
"roadShowDailyOpeningEndTime": store.get("roadShowDailyOpeningEndTime"),
"roadShowStartDate": timestamp_to_date(store.get("roadShowStartDate")),
"shopAddress": store.get("shopAddress")
}
writer.writerow(row)
total_count += 1
time.sleep(0.5)
print(f"\n抓取完成!共获取 {total_count} 条门店数据,已保存至: {os.path.abspath(output_file)}")
if __name__ == '__main__':
main()
获取数据标签如下,storeFacilitiesId(门店id)、zeekrCoordinateName(门店名称)、province(省)、city(市)、district(县)、roadShowDailyOpeningStartTime(门店营业开始时间)、roadShowDailyOpeningEndTime(门店结束营业时间)、shopAddress(门店地址)、roadShowStartDate(门店开业时间)、lng & lat(地理坐标),其他一些非关键标签,这里省略;

第三步: 坐标系转换,由于极氪门店数据使用的是高德坐标系(GCJ-02),为了在ArcGIS上准确展示而不发生偏移,我们需要将门店的坐标从GCJ-02转换为WGS-84坐标系。我们可以利用coord-convert库中的gcj2wgs(lng, lat)函数,也可以用免费这个网站:批量转换工具:地图坐标系批量转换 - 免费在线工具;
对CSV文件中的门店坐标列进行转换,完成坐标转换后,再将数据导入ArcGIS进行可视化;

接下来,我们进行看图说话:
从全国门店地理分布来看,极氪的线下渠道网络展现出高度战略化的空间布局逻辑,呈现出"核心城市群高密度覆盖、区域中心城市精准卡位、边疆省会象征性布点 "的三级结构。在第一梯队,长三角地区 无疑是极氪的战略大本营:仅上海一城便拥有超过10家门店,杭州、苏州、宁波、南京等地也普遍设有2--4个触点,形成"15分钟体验圈";珠三角 则以深圳、广州为双核,辅以东莞、佛山等制造业重镇的门店布局,紧密呼应当地高净值用户对智能电动产品的旺盛需求;京津冀以北京为核心,天津、石家庄为支点,构建起北方市场的服务主干网。
进入第二梯队,极氪在中西部和东北地区的布局体现出鲜明的"省会优先、经济导向 "原则。成都、武汉、西安、重庆四大国家中心城市均实现多店覆盖,其中成都已形成城南金融城、城西万象城、城东龙湖天街等多商圈联动的立体网络;郑州、合肥、长沙、青岛、沈阳等强省会城市也至少设有1--2家门店,通常选址于高端购物中心或城市地标商圈(如万象城、IFS、SKP等),既保障客流质量,也强化品牌高端调性。值得注意的是,部分非省会但汽车产业基础雄厚或消费力突出的城市------如宁波、无锡、厦门、珠海------同样被纳入重点布局名单,反映出极氪对"实际购买力"而非单纯行政等级的重视。
在第三层级,极氪在乌鲁木齐、拉萨、呼和浩特、银川、西宁、海口等边疆或海岛城市虽仅设单店,却具有重要战略意义:这些门店往往兼具品牌展示、区域交付与用户维系功能,既是"全国可交付"承诺的物理兑现,也为未来潜在市场预留接口。尤其在海南,依托自贸港新能源政策优势,极氪在海口、三亚均设有门店,并与当地超充网络深度协同,探索"绿色出行+旅游生态"的创新场景。
整体来看,极氪门店分布不仅与中国新能源汽车渗透率地图高度重合 ,更与其目标用户画像(高学历、高收入、科技敏感型)的空间聚集特征深度咬合。门店类型亦呈现差异化配置:一线城市以"极氪中心 "(集产品展示、用户共创、社群活动于一体)为主,二三线城市则更多采用轻量化的"极氪空间 "或交付服务中心,实现成本与体验的最优平衡。这种"以用户密度定网点、以城市能级配形态、以生态协同拓边界"的布局哲学,正是极氪将"科技平权"理念落地为空间实践的生动体现。
在了解极氪门店的空间分布之后,我们不妨将视角从"地理维度"转向"时间维度",深入观察其线下网络的演进轨迹。接下来,让我们一同梳理极氪门店的开店时间轴------这条贯穿品牌成长历程的关键脉络;

从2021年下半年至2022年初,极氪的线下网络扩张呈现出谨慎而稳健的步伐 。在此期间,每月新开门店的数量普遍维持在较低水平,通常介于1到4家之间,仅在2021年12月出现了一次小高峰,达到16家新店开业 。这一现象反映了极氪初期的战略选择:通过重点城市试点 来验证商业模式,并逐步积累市场经验。例如,在上海、北京、深圳 等一线城市的旗舰店成为首批落地项目,不仅为后续全国范围内的布局提供了宝贵的运营数据,也帮助品牌确立了高端智能电动车的品牌形象。这一阶段,极氪注重用户体验和产品展示,力求在核心市场建立稳固的基础。
进入2022年中,随着极氪车型矩阵的逐渐完善以及市场接受度的提升,门店扩张步伐显著加快。尤其是2022年底 ,单月新增门店数达到了当年度的峰值---20家 。这标志着极氪正式开启了全国化布局的新篇章。然而,2023年的扩张趋势并非一帆风顺,部分月份如8月仅新增5家门店,显示出品牌在面对外部环境变化(如供应链挑战或市场竞争加剧)时所做出的灵活调整。尽管如此,整体来看,极氪仍保持了相对稳定的增长态势,特别是在2024年 ,多次实现了单月新增20多家门店的成绩。例如,2024年6月和8月分别新开设了22家门店,表明品牌在渠道下沉及区域覆盖上持续发力,进一步巩固了其在全国范围内的市场地位。
最引人注目的是2025年9月的数据 ,该月单月新开门店数高达50家 ,创下整个周期中的绝对峰值。这一显著增长很可能是由于多个因素共同作用的结果,包括但不限于新产品发布、品牌升级活动或"千城万店 "计划的正式启动。具体而言,2025年是极氪品牌发展的关键一年,公司推出了多款备受期待的新车型,并加大了对三四线城市乃至县级市场的投入力度。此外,极氪还通过优化供应链管理、提升服务质量和增强用户互动体验等方式,确保每一处新开门店都能迅速融入当地社区,成为连接用户与品牌的桥梁。这种"稳扎稳打 + 战略冲刺"的发展模式,不仅推动了极氪服务网络向更广域、更密集的方向发展,也为未来实现可持续增长奠定了坚实基础。
文章仅用于分享个人学习成果与个人存档之用,分享知识,如有侵权,请联系作者进行删除。所有信息均基于作者的个人理解和经验,不代表任何官方立场或权威解读。