If you need a precise border of the city of Porto in coordinates, then extract a city boundary. Check these pages Getting city boundaries from openstreetmap and Getting polygon boundaries of City in JSON from Google Maps API?
If only a rectangular, it is a boundig box, and you can get it here Getting bounding-box of city.
ZCTAs are created every 10 years for the Decennial Census. They are not representative of current zip code boundaries. Zip codes are created for mail carriers to deliver the mail, not for data analysis.
here is some really good information about ZCTAs from the Census Bureau:
This video also has some good information in it
You can use Overpass API to get data in GeoJSON format.
You can query using WikidataID parameter (Q12501)
Example on https://geoattractions.com/details/55971