# Methods: FAERS skin & hair reports for semaglutide and tirzepatide **Reports do not prove the drug caused the reaction.** FAERS is a voluntary/spontaneous reporting system. Counts here are reports, not cases, not incidence, and not risk. - Data: FDA Adverse Event Reporting System (FAERS) via openFDA `https://api.fda.gov/drug/event.json`, no API key. - Queried: 2026-10-10, 15:35 CT (see `query_time.txt`). Dataset `meta.last_updated`: **2026-07-30**. - Every URL called is listed, in order, in `query_log.tsv` (term checks, then the data pull). Scripts: `verify.py`, `pull.py`, `build.py`, `fetch.py`. Raw responses aggregated in `raw_pull.json`. ## Drug definitions (any role) - Semaglutide: `(patient.drug.openfda.generic_name:"SEMAGLUTIDE" patient.drug.medicinalproduct:("SEMAGLUTIDE" "OZEMPIC" "WEGOVY" "RYBELSUS"))` (space = OR) - Tirzepatide: `(patient.drug.openfda.generic_name:"TIRZEPATIDE" patient.drug.medicinalproduct:("TIRZEPATIDE" "MOUNJARO" "ZEPBOUND"))` - **Suspect vs any role:** we count reports listing the drug in any role. openFDA search cannot tie `drugcharacterization` to the specific drug entry in a report (nested fields are not correlated), so a "suspect" filter would only mean "some drug on the report is suspect." As a check, adding `+AND+patient.drug.drugcharacterization:1` changes all-time totals from 100,912 to 100,550 (semaglutide) and 160,934 to 160,472 (tirzepatide), i.e. under 0.5% difference, so the choice barely matters here. - A report naming both drugs counts for both. Brand-name variants misspelled in `medicinalproduct` (e.g. "OZEMPIC 1MG PEN") may be missed if not mapped by openFDA. ## Symptom terms MedDRA preferred terms matched with `patient.reaction.reactionmeddrapt.exact`. Spellings verified (nonzero database-wide counts) in `term_verification.json`. "HAIR THINNING" is not a preferred term (0 hits), so hair thinning is captured mostly under ALOPECIA. - Individual: ALOPECIA, HAIR TEXTURE ABNORMAL, HAIR DISORDER, RASH, PRURITUS, URTICARIA, ERYTHEMA, DRY SKIN, HYPERHIDROSIS, SKIN DISCOLOURATION, SKIN LAXITY, SKIN WRINKLING, DYSAESTHESIA, HYPERAESTHESIA, ALLODYNIA, PAIN OF SKIN, SKIN BURNING SENSATION. - Group "ANY SKIN OR HAIR TERM": one OR query over the 17 terms above (unique reports, not a sum). - Group "INJECTION SITE REACTIONS": one OR query over INJECTION SITE REACTION / PAIN / ERYTHEMA / PRURITUS / RASH / SWELLING / BRUISING / URTICARIA / MASS / HAEMORRHAGE. Kept separate from skin findings. ## Counting - `count=receivedate` (daily buckets from FDA receipt date) for each drug, and each drug+term, aggregated to calendar quarters. - Denominator = all reports for that drug in that quarter. `share = report_count / total_reports`, i.e. proportion of the drug's reports that list the term. - Window: semaglutide 2018Q1–2026Q2 (Ozempic approved Dec 2017); tirzepatide 2022Q3–2026Q2 (Mounjaro approved May 2022). Earlier reports (clinical-trial era, a few dozen) are excluded. 2026Q3 excluded as incomplete. - Charts showing shares hide quarters with fewer than 500 total reports. - Reporting odds ratio (alopecia, all time, any role): a = drug+alopecia, b = drug reports without alopecia, c = alopecia reports for all other drugs, d = all other reports; total FAERS = `search=_exists_:safetyreportid`. 95% CI by the log method. This is a **disproportionality signal**, not a risk estimate. "Other drugs" includes everything in FAERS (cancer drugs etc.), which affects the baseline. ## Caveats - Duplicates and follow-ups: the same event can be reported by patient, doctor and manufacturer; openFDA does not fully de-duplicate. - Stimulated reporting: media coverage (e.g. "Ozempic face"/hair-loss stories in 2023, compounded-drug coverage) and patient-support programs raise reporting without any change in true rate. - Semaglutide quarterly totals are very spiky (e.g. 3,828 in 2025Q2 vs 15,522 in 2025Q3 vs 4,294 in 2025Q4), consistent with batch submissions by manufacturers; treat single-quarter moves cautiously. - Use grew enormously over the period, so rising counts largely reflect more people on the drugs. No exposure denominator exists in FAERS. - Lag: reports can arrive months after the event; dataset last updated 2026-07-30. - Terms are as coded by reporters/processors; one report can carry several terms.