There are a few points in the existing code that I think could be improved.
Confusing function name write_new_json
Naming is important. Good names make your code more readable, and easier to understand. Bad names make it less readable. Names are bad when they don't describe what the thing is/does, or conversely, if they seem to describe something that the ...
There's a couple small things I usually do differently that I'd like to point out:
f = open("competitions.json","w")
# pretty prints and writes the same to the json file
Can be replaced with:
with open("competitions.json","w") as f:
# pretty prints and writes the same to the json ...