Every fixture has a status that walks through a predictable lifecycle: scheduled before kickoff, then live (also called in-play) once the match starts, then finished when it ends. A few statuses break the pattern — postponed when a match is moved to a later date, and abandoned when play stops part-way and cannot resume. The status, not just the score, is what tells you whether a 0–0 means “not started yet” or “a genuine goalless draw”.
Live scores are relayed through a chain — from the venue or an official feed, to a data provider, to apps like this one — and each hop adds a little delay. As a result the number you see can trail the live broadcast by anywhere from a few seconds to a few minutes. That lag is normal; it is the price of aggregating many matches from many sources into one place.
Scores are not always final the moment they appear. A goal can be reviewed and disallowed, a player’s point can be reassigned, or a data-entry slip can be fixed after the fact, so a result you saw a minute ago may be corrected. We treat the latest update as authoritative and replace the old value rather than silently keeping a stale one.
Because of latency and corrections, treat an in-play score as the best recent picture of a match, not a frame-accurate one. For the definitive result, wait for the fixture to reach a finished status — that is the point at which the score is settled rather than still moving.