As it happens, the USPS actually has an online form for this service [0]. For instance, if I query "1600 pennsylvania avenue" in Washington, DC, then I get the full two-line address back on page 2, complete with the Zip+4 code:
1600 PENNSYLVANIA AVE NW
WASHINGTON DC 20500-0005
I've used this tool before to double-check some more wonky addresses before sending mail to them. I'd be surprised if they don't also offer an API for the service.
[0] https://tools.usps.com/zip-code-lookup.htm?byaddress