- 95 rows = 19 universities × 5 school-leaving certificates (Russian attestat with EGE, Turkish lise diploma, Serbian matura, EU school-leaving certificates, UK A-level).
- Mainland: 68 of 80 mainland rows accept "a high school diploma" without naming the certificate; 10 of 16 mainland universities name at least one certificate. At the 3 Hong Kong universities 11 of 15 rows give a minimum grade.
- Visa-free short stays never cover study: all 7 passports need an X1 visa for the mainland, and 1 of 7 (TR) has no visa-free entry to the mainland at all.
- The China Scholastic Competency Assessment (CSCA), an entrance test for international applicants, is required at 14 of 16 mainland universities (admission_cycle.csv).
- 13 rows on the switch from HSK 2.0 to HSK 3.0: a larger vocabulary is needed for the same level number, while university thresholds keep their wording.
data.csv. 95 rows, 14 columns.
admission_cycle.csv. 19 rows, 15 columns.
apostille.csv. 8 rows, 12 columns.
hsk_status.csv. 13 rows, 8 columns.
language_realism_evidence.csv. 11 rows, 10 columns.
language_requirements.csv. 38 rows, 16 columns.
prep_programmes.csv. 24 rows, 18 columns.
visa_by_passport.csv. 14 rows, 21 columns.
work_rules.csv. 12 rows, 10 columns.
sources.csv. 132 rows, 6 columns.
data.json: the rows of data.csv as JSON.
schema.json: JSON Schema of data.json.
datapackage.json: Frictionless Data descriptor of every CSV.
Also on Kaggle · Hugging Face
Scope
16 mainland universities in the ARWU 2026 top 100 plus 3 in Hong Kong (HKU and CityUHK are in the top 100, CUHK is kept as a reference).
Codebook
data.csv, 95 rows. Unique key: university_id + certificate.
| Column | Type | Values / unit | What it holds |
|---|---|---|---|
university_id | string | text (19 distinct) | Stable slug of the university, the same id as in the other Long Bet datasets (e.g. tsinghua-university). |
certificate | string | eu_school_leaving, rs_matura, ru_attestat_ege, tr_lise_diplomasi, uk_a_level | School-leaving certificate: ru_attestat_ege (Russian attestat with EGE), tr_lise_diplomasi (Turkish lise diploma), rs_matura (Serbian matura), eu_school_leaving (EU school-leaving certificates such as Abitur, baccalaureat, maturita), uk_a_level. |
accepted | string | conditional, not_stated, yes, yes_generic_hs_diploma | yes = the certificate is named as accepted; yes_generic_hs_diploma = any high school diploma accepted, certificate not named; conditional = accepted with an extra step; not_stated. |
certificate_named | string | text (16 distinct); null in 69 | Name of the certificate as written on the page, when named. |
extra_requirements | string | text (22 distinct); null in 3 | Tests, language and other requirements on top of the certificate. |
document_rules | string | text (19 distinct); null in 4 | Rules on transcripts, translations, notarisation and apostille. |
min_grades | string | text (14 distinct); null in 81 | Minimum grades for this certificate, when published. |
intake | string | text (11 distinct) | Intake the page refers to. |
status | string | found | found = the fact was read on the source page; not_found = the page was checked and the fact is not there: the row records what was looked for, source_url gives the URL tried and note says what was missing. |
source_url | string | text (23 distinct) | Page(s) where the fact is stated, "; "-separated, primary pages first. For not_found rows: the page(s) tried. |
source_type | string | official | official = university, government, embassy, airport or ranking publisher page; law = legal act; secondary = media, Wikipedia, agencies, aggregators. |
checked_at | string | text (2 distinct) | Date the row was last read on the source, ISO 8601. |
confidence | string | partial, verified | verified = read on an official or legal page for the current cycle; partial = official but older cycle or incomplete, or a reputable secondary source; estimate = derived or calculated, method in note. Empty for not_found rows. |
note | string | text (43 distinct) | Caveats in English. "Updated 2026-10-23:" marks text added by the second verification pass of 23 October 2026. |
Table 1. Columns of data.csv.
admission_cycle.csv, 19 rows. Unique key: university_id.
| Column | Type | Values / unit | What it holds |
|---|---|---|---|
university_id | string | text (19 distinct) | Stable slug of the university, the same id as in the other Long Bet datasets (e.g. tsinghua-university). |
intake | string | text (11 distinct) | Intake the page refers to. |
application_open | string | text (15 distinct); null in 2 | Application opening date (ISO 8601 where the page gives one date; text where routes or rounds differ). |
application_deadline | string | text (19 distinct) | Application deadline (ISO date where the page gives one date; text where there are several rounds). |
results_date | string | text (15 distinct); null in 4 | When decisions are published. |
study_start | string | text (12 distinct); null in 5 | Start of study. |
csca_required | string | false, optional, true | China Scholastic Competency Assessment (CSCA): true required, false not required, optional accepted as evidence. |
own_exam | string | text (18 distinct); null in 1 | University entrance exam or interview. |
intl_quota_or_competition | string | text (2 distinct); null in 15 | Published quota or competition figures for international applicants. |
status | string | found | found = the fact was read on the source page; not_found = the page was checked and the fact is not there: the row records what was looked for, source_url gives the URL tried and note says what was missing. |
source_url | string | text (19 distinct) | Page(s) where the fact is stated, "; "-separated, primary pages first. For not_found rows: the page(s) tried. |
source_type | string | official, secondary | official = university, government, embassy, airport or ranking publisher page; law = legal act; secondary = media, Wikipedia, agencies, aggregators. |
checked_at | string | text (2 distinct) | Date the row was last read on the source, ISO 8601. |
confidence | string | partial, verified | verified = read on an official or legal page for the current cycle; partial = official but older cycle or incomplete, or a reputable secondary source; estimate = derived or calculated, method in note. Empty for not_found rows. |
note | string | text (19 distinct) | Caveats in English. "Updated 2026-10-23:" marks text added by the second verification pass of 23 October 2026. |
Table 2. Columns of admission_cycle.csv.
apostille.csv, 8 rows. Unique key: record_id.
| Column | Type | Values / unit | What it holds |
|---|---|---|---|
record_id | string | text (8 distinct) | Row id: <party_a slug>__<topic>__<n>. |
topic | string | bilateral_in_force, china_mainland_accession, hong_kong_status, mainland_hong_kong, objection | Topic: bilateral_in_force, mainland_hong_kong, hong_kong_status, objection and others. |
party_a | string | text (2 distinct) | Jurisdiction on one side (China mainland or Hong Kong SAR). |
party_b | string | text (6 distinct); null in 2 | Other party (country or group of countries). |
since | string | text (3 distinct); null in 1 | Date the Apostille Convention applies between the parties, ISO 8601. |
detail | string | text (8 distinct) | What applies. |
status | string | found | found = the fact was read on the source page; not_found = the page was checked and the fact is not there: the row records what was looked for, source_url gives the URL tried and note says what was missing. |
source_url | string | text (3 distinct) | Page(s) where the fact is stated, "; "-separated, primary pages first. For not_found rows: the page(s) tried. |
source_type | string | official, secondary | official = university, government, embassy, airport or ranking publisher page; law = legal act; secondary = media, Wikipedia, agencies, aggregators. |
checked_at | string | text (1 distinct) | Date the row was last read on the source, ISO 8601. |
confidence | string | partial, verified | verified = read on an official or legal page for the current cycle; partial = official but older cycle or incomplete, or a reputable secondary source; estimate = derived or calculated, method in note. Empty for not_found rows. |
note | string | text (7 distinct); null in 1 | Caveats in English. "Updated 2026-10-23:" marks text added by the second verification pass of 23 October 2026. |
Table 3. Columns of apostille.csv.
visa_by_passport.csv, 14 rows. Unique key: passport + destination.
| Column | Type | Values / unit | What it holds |
|---|---|---|---|
passport | string | text (7 distinct) | Passport, ISO 3166-1 alpha-2 (RU, TR, RS, DE, FR, IT, PL). |
destination | string | hong_kong, mainland | mainland or hong_kong. |
short_stay_visa_free_days | integer | 0 to 90 | Visa-free stay for short visits. Unit: days (0 = a visa is needed). Never covers study. |
short_stay_basis | string | text (6 distinct) | Legal basis of the visa-free stay. |
study_visa_type | string | text (2 distinct) | Visa or entry permit needed for a bachelor programme. |
where_to_apply | string | text (6 distinct) | Where the study visa is applied for. |
visa_fee_amount_local | integer | 2 to 2500 | Consular visa fee, single entry. Unit: visa_fee_currency (one-off). |
visa_fee_currency | string | text (5 distinct); null in 1 | ISO 4217 currency of the visa fee; null when the source does not state it. |
visa_fee_period | string | one_off | Always one_off. |
service_fee_amount_local | string | text (6 distinct); null in 8 | Visa centre service fee, as text with its currency (standard, express, urgent). |
processing_days | string | text (2 distinct); null in 6 | Processing time. |
passport_validity | string | text (2 distinct) | Passport validity required. |
documents | string | text (2 distinct) | Documents for the study visa. |
criminal_record_rule | string | text (2 distinct) | Whether a criminal-record certificate is required and by whom. |
residence_permit | string | text (3 distinct) | Residence permit after arrival: deadline, fee, validity. |
status | string | found | found = the fact was read on the source page; not_found = the page was checked and the fact is not there: the row records what was looked for, source_url gives the URL tried and note says what was missing. |
source_url | string | text (9 distinct) | Page(s) where the fact is stated, "; "-separated, primary pages first. For not_found rows: the page(s) tried. |
source_type | string | official, secondary | official = university, government, embassy, airport or ranking publisher page; law = legal act; secondary = media, Wikipedia, agencies, aggregators. |
checked_at | string | text (1 distinct) | Date the row was last read on the source, ISO 8601. |
confidence | string | estimate, partial, verified | verified = read on an official or legal page for the current cycle; partial = official but older cycle or incomplete, or a reputable secondary source; estimate = derived or calculated, method in note. Empty for not_found rows. |
note | string | text (9 distinct) | Caveats in English. "Updated 2026-10-23:" marks text added by the second verification pass of 23 October 2026. |
Table 4. Columns of visa_by_passport.csv.
work_rules.csv, 12 rows. Unique key: region + topic.
| Column | Type | Values / unit | What it holds |
|---|---|---|---|
region | string | hong_kong, mainland | mainland (mainland China) or hong_kong (Hong Kong SAR). |
topic | string | general_rule, illegal_employment, illegal_employment_penalty, internship, off_campus_permission, on_campus, part_time_work, post_graduation_work, summer, temporary_relaxation | Rule topic, e.g. part_time_work, internship, off_campus_permission. |
rule | string | text (12 distinct) | The rule, in words. |
legal_basis | string | text (9 distinct) | Law, regulation or scheme the rule is based on. |
status | string | found | found = the fact was read on the source page; not_found = the page was checked and the fact is not there: the row records what was looked for, source_url gives the URL tried and note says what was missing. |
source_url | string | text (7 distinct) | Page(s) where the fact is stated, "; "-separated, primary pages first. For not_found rows: the page(s) tried. |
source_type | string | law, official | official = university, government, embassy, airport or ranking publisher page; law = legal act; secondary = media, Wikipedia, agencies, aggregators. |
checked_at | string | text (1 distinct) | Date the row was last read on the source, ISO 8601. |
confidence | string | partial, verified | verified = read on an official or legal page for the current cycle; partial = official but older cycle or incomplete, or a reputable secondary source; estimate = derived or calculated, method in note. Empty for not_found rows. |
note | string | text (9 distinct); null in 3 | Caveats in English. "Updated 2026-10-23:" marks text added by the second verification pass of 23 October 2026. |
Table 5. Columns of work_rules.csv.
language_requirements.csv, 38 rows. Unique key: university_id + track.
| Column | Type | Values / unit | What it holds |
|---|---|---|---|
university_id | string | text (19 distinct) | Stable slug of the university, the same id as in the other Long Bet datasets (e.g. tsinghua-university). |
track | string | en_taught, zh_taught | Programme track: zh_taught, en_taught (run by the university), en_taught_joint_institute, en_taught_international_college. |
track_offered | string | no, yes; null in 1 | yes if the university offers this track to international bachelor applicants, no if not. |
intake_cycle | string | text (5 distinct); null in 2 | Intake or cycle the requirement was published for. |
hsk_level_required | string | text (6 distinct); null in 8 | HSK level required at application or enrolment; none = not required. |
hsk_min_score | string | text (6 distinct); null in 26 | Minimum HSK score as published (text: some pages give alternatives). |
hsk_section_min | string | text (3 distinct); null in 34 | Minimum score per HSK section, when published. |
hsk_scale | string | text (4 distinct); null in 23 | Which HSK version the threshold refers to (2.0 or 3.0), as far as the page says. |
english_test_required | string | text (21 distinct); null in 9 | English test and minimum score required. |
hsk_required_to_graduate | string | text (7 distinct); null in 7 | Chinese-language requirement to graduate. |
status | string | found, not_found | found = the fact was read on the source page; not_found = the page was checked and the fact is not there: the row records what was looked for, source_url gives the URL tried and note says what was missing. |
source_url | string | text (31 distinct) | Page(s) where the fact is stated, "; "-separated, primary pages first. For not_found rows: the page(s) tried. |
source_type | string | official | official = university, government, embassy, airport or ranking publisher page; law = legal act; secondary = media, Wikipedia, agencies, aggregators. |
checked_at | string | text (2 distinct) | Date the row was last read on the source, ISO 8601. |
confidence | string | partial, verified; null in 2 | verified = read on an official or legal page for the current cycle; partial = official but older cycle or incomplete, or a reputable secondary source; estimate = derived or calculated, method in note. Empty for not_found rows. |
note | string | text (38 distinct) | Caveats in English. "Updated 2026-10-23:" marks text added by the second verification pass of 23 October 2026. |
Table 6. Columns of language_requirements.csv.
prep_programmes.csv, 24 rows. Unique key: university_id + prep_programme_name.
| Column | Type | Values / unit | What it holds |
|---|---|---|---|
university_id | string | text (19 distinct) | Stable slug of the university, the same id as in the other Long Bet datasets (e.g. tsinghua-university). |
prep_programme_name | string | text (21 distinct) | Name of the preparatory (pre-university, foundation) programme; text starting with none = no such programme found. |
provider | string | text (2 distinct); null in 5 | Who runs it. |
language_of_prep | string | text (7 distinct); null in 6 | Language of instruction of the preparatory programme. |
duration_months | string | text (9 distinct); null in 5 | Duration. Unit: months (range as text). |
cost_amount_local | integer | 7000 to 56000; null in 10 | Tuition of the preparatory programme. Unit: currency per period. |
currency | string | text (1 distinct); null in 6 | ISO 4217 currency of cost_amount_local. |
period | string | one_off, per_semester, per_year; null in 7 | Period the amount refers to, e.g. per_year, per_month, one_off. |
intake_cycle | string | text (17 distinct); null in 2 | Intake or cycle the requirement was published for. |
entry_level | string | text (16 distinct); null in 8 | Language or academic level needed to start. |
target_level | string | text (10 distinct); null in 12 | Level the programme leads to, or the condition to enter the bachelor. |
progression_guaranteed | string | text (14 distinct); null in 6 | Whether finishing the programme guarantees a bachelor place, as stated. |
status | string | found, not_found | found = the fact was read on the source page; not_found = the page was checked and the fact is not there: the row records what was looked for, source_url gives the URL tried and note says what was missing. |
source_url | string | text (22 distinct) | Page(s) where the fact is stated, "; "-separated, primary pages first. For not_found rows: the page(s) tried. |
source_type | string | official, secondary | official = university, government, embassy, airport or ranking publisher page; law = legal act; secondary = media, Wikipedia, agencies, aggregators. |
checked_at | string | text (2 distinct) | Date the row was last read on the source, ISO 8601. |
confidence | string | partial, verified; null in 1 | verified = read on an official or legal page for the current cycle; partial = official but older cycle or incomplete, or a reputable secondary source; estimate = derived or calculated, method in note. Empty for not_found rows. |
note | string | text (24 distinct) | Caveats in English. "Updated 2026-10-23:" marks text added by the second verification pass of 23 October 2026. |
Table 7. Columns of prep_programmes.csv.
hsk_status.csv, 13 rows. Unique key: topic.
| Column | Type | Values / unit | What it holds |
|---|---|---|---|
topic | string | text (13 distinct) | Topic of the HSK 2.0 to HSK 3.0 transition, e.g. hsk3_released, last_hsk2_sitting. |
value | string | text (13 distinct) | The fact, in words. |
status | string | found | found = the fact was read on the source page; not_found = the page was checked and the fact is not there: the row records what was looked for, source_url gives the URL tried and note says what was missing. |
source_url | string | text (12 distinct) | Page(s) where the fact is stated, "; "-separated, primary pages first. For not_found rows: the page(s) tried. |
source_type | string | official, secondary | official = university, government, embassy, airport or ranking publisher page; law = legal act; secondary = media, Wikipedia, agencies, aggregators. |
checked_at | string | text (1 distinct) | Date the row was last read on the source, ISO 8601. |
confidence | string | partial, verified | verified = read on an official or legal page for the current cycle; partial = official but older cycle or incomplete, or a reputable secondary source; estimate = derived or calculated, method in note. Empty for not_found rows. |
note | string | text (13 distinct) | Caveats in English. "Updated 2026-10-23:" marks text added by the second verification pass of 23 October 2026. |
Table 8. Columns of hsk_status.csv.
language_realism_evidence.csv, 11 rows. Unique key: claim.
| Column | Type | Values / unit | What it holds |
|---|---|---|---|
claim | string | text (11 distinct) | Statement about how realistic the language route is. |
figure | string | text (10 distinct); null in 1 | The number behind the statement, as published. |
population | string | text (11 distinct) | Whom the figure refers to. |
evidence_type | string | official_statistic, university_statement | official_statistic or university_statement. |
status | string | found | found = the fact was read on the source page; not_found = the page was checked and the fact is not there: the row records what was looked for, source_url gives the URL tried and note says what was missing. |
source_url | string | text (11 distinct) | Page(s) where the fact is stated, "; "-separated, primary pages first. For not_found rows: the page(s) tried. |
source_type | string | official, secondary | official = university, government, embassy, airport or ranking publisher page; law = legal act; secondary = media, Wikipedia, agencies, aggregators. |
checked_at | string | text (1 distinct) | Date the row was last read on the source, ISO 8601. |
confidence | string | estimate, partial, verified | verified = read on an official or legal page for the current cycle; partial = official but older cycle or incomplete, or a reputable secondary source; estimate = derived or calculated, method in note. Empty for not_found rows. |
note | string | text (11 distinct) | Caveats in English. "Updated 2026-10-23:" marks text added by the second verification pass of 23 October 2026. |
Table 9. Columns of language_realism_evidence.csv.
sources.csv, 132 rows. Unique key: source_id. One row per distinct URL in the columns whose name ends in source_url: source_id, url, title (publisher and host), source_type, accessed_at (latest date a row citing it was checked), used_for (file, column and number of rows).
Method
Data for 13 mainland and 3 Hong Kong universities were collected between 9 and 23 October 2026 from official pages of the universities (admission and international-office pages, fee tables, catalogues), governments, embassies and visa centres, ranking publishers and, for stable facts only, secondary sources; a second verification pass on 23 October 2026 re-read the rows with gaps. An independent re-check of 69 random rows against the source found 64 matching; the 5 differences were corrected or given a lower confidence before release. The three universities that entered the ARWU top 100 in 2026 (Southeast University, Harbin Institute of Technology, Tianjin University) were collected on 8 November 2026 into the same columns; an independent re-check of 20 random rows of that collection found no difference: 8 matching, 6 matching on a secondary or previous-cycle page (marked partial), 6 whose page could not be opened automatically. A second check of 20 other random rows of the three universities, read in a browser on the same day, found 15 matching, 1 matching in part, 1 whose page is no longer online and 3 differences (Southeast University's 2027 admission brochure had replaced the 2025 language and calendar rules; Tianjin University names A-Level results in its scholarship notice); the 3 were corrected before release.
Every row carries its provenance: source_url (the page where the fact is stated; several pages "; "-separated), source_type (official, law, secondary), checked_at (date read), confidence (verified, partial, estimate) and note. status is found or not_found: a not_found row records what was checked and not found, with the URL tried in source_url and the reason in note; its value columns are empty. Empty means unknown; no value is guessed.
Text added by the second verification pass starts with "Updated 2026-10-23:". Ids follow the other Long Bet datasets (university_id slugs).
data.csv crosses each university with five school-leaving certificates and records whether the admission pages name the certificate, accept "a high school diploma" in general, or add conditions; min_grades is filled only where a minimum is published. admission_cycle.csv gives the latest published calendar (mostly the 2026 intake; 2027 where already out). Visa rows cover seven passports (RU, TR, RS, DE, FR, IT, PL) for the mainland and Hong Kong; fees are those of the visa centre or embassy in the passport country. hsk_status.csv documents the switch from HSK 2.0 to HSK 3.0 (new test standard from 2026-2027) because university thresholds are written in HSK levels whose vocabulary changes.
Known limitations
- Most mainland admission pages do not name foreign school certificates;
yes_generic_hs_diplomameans the page asks for a high school diploma and does not say how a specific certificate is read. - Quotas and competition for international applicants are not published, except an English-taught cap at Xi'an Jiaotong University (40 places) and the cap of the Hong Kong University Grants Committee (UGC) on non-local students.
- The Serbian visa fee has no currency on the embassy notice; the French centre fee comes from an agency; the Polish reduced fee was read for 2024 only.
- Several admission pages are for the 2025 or 2026 intake because the 2027 guide was not yet published on 23 October 2026 (8 November 2026 for Southeast University, Harbin Institute of Technology and Tianjin University).
- Across all files of this package, 3 of 234 rows are
not_foundand 2 areestimate.
How to verify
Open the source_url of a row and compare with checked_at. Fees, deadlines, visa fees and scholarship terms change every cycle and are the first values to re-check; rankings change once a year. not_found rows show which page was tried, so a later check can start there. Every URL is listed once in sources.csv.
Cite this
Atamanova, M. (2026). China and Hong Kong Entry Rules for International Bachelor Applicants (2026) [Data set]. https://mariascales.com/research/long-bet/data/china-entry-rules/
License
CC BY 4.0 (Creative Commons Attribution 4.0 International, https://creativecommons.org/licenses/by/4.0/) for this compilation: free to share and adapt with attribution, see Cite this.